package com.kidgrow.db.config; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.support.http.StatViewServlet; import com.alibaba.druid.support.http.WebStatFilter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import javax.sql.DataSource; import java.sql.SQLException; import java.util.HashMap; import java.util.Map; /** * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020
* * @Description: 自定义填充公共 name 字段
* @Project:
* @CreateDate: Created in 2020/2/4 16:05
* @Author: liuke */ @Slf4j //@Configuration public class DruidDBConfig { @Value("${spring.datasource.url}") private String dbUrl; @Value("${spring.datasource.type}") private String type; @Value("${spring.datasource.loginUsername}") private String loginUsername; @Value("${spring.datasource.loginPassword}") private String loginPassword; @Value("${spring.datasource.username}") private String username; @Value("${spring.datasource.password}") private String password; @Value("${spring.datasource.driver-class-name}") private String driverClassName; @Value("${spring.datasource.initialSize}") private int initialSize; @Value("${spring.datasource.minIdle}") private int minIdle; @Value("${spring.datasource.maxActive}") private int maxActive; @Value("${spring.datasource.maxWait}") private int maxWait; @Value("${spring.datasource.timeBetweenEvictionRunsMillis}") private int timeBetweenEvictionRunsMillis; @Value("${spring.datasource.minEvictableIdleTimeMillis}") private int minEvictableIdleTimeMillis; @Value("${spring.datasource.validationQuery}") private String validationQuery; @Value("${spring.datasource.testWhileIdle}") private boolean testWhileIdle; @Value("${spring.datasource.testOnBorrow}") private boolean testOnBorrow; @Value("${spring.datasource.testOnReturn}") private boolean testOnReturn; @Value("${spring.datasource.filters}") private String filters; @Value("${spring.datasource.logSlowSql}") private String logSlowSql; @Value("${spring.datasource.name}") private String dataSourceName; /** *配置Druid监控 * 后台管理Servlet * @return */ @Bean public ServletRegistrationBean druidServlet() { ServletRegistrationBean reg = new ServletRegistrationBean(); reg.setServlet(new StatViewServlet()); reg.addUrlMappings("/druid/*"); reg.addInitParameter("allow", ""); //白名单 reg.addInitParameter("deny", ""); //黑名单 reg.addInitParameter("loginUsername", loginUsername); reg.addInitParameter("loginPassword", loginPassword); reg.addInitParameter("logSlowSql", logSlowSql); reg.addInitParameter("resetEnable","false");//禁用HTML页面上的“Reset All”功能 return reg; } /** * 配置Web监控Filters * @return */ @Bean public FilterRegistrationBean filterRegistrationBean() { FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(); filterRegistrationBean.setFilter(new WebStatFilter()); Map initParams = new HashMap(); //设置忽略请求 initParams.put("exclusions", "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"); filterRegistrationBean.setInitParameters(initParams); // filterRegistrationBean.addInitParameter("profileEnable", "true"); // filterRegistrationBean.addInitParameter("principalCookieName","USER_COOKIE"); // filterRegistrationBean.addInitParameter("principalSessionName",""); // filterRegistrationBean.addInitParameter("aopPatterns","com.example.demo.service"); filterRegistrationBean.addUrlPatterns("/*"); return filterRegistrationBean; } @Bean @ConfigurationProperties(prefix="spring.datasource") public DataSource dataSource(){ DruidDataSource datasource = new DruidDataSource(); datasource.setUrl(dbUrl); datasource.setUsername(username); datasource.setPassword(password); datasource.setDriverClassName(driverClassName); datasource.setInitialSize(initialSize); datasource.setMinIdle(minIdle); datasource.setMaxActive(maxActive); //datasource.setDbType(type); datasource.setMaxWait(maxWait); datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis); datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis); datasource.setValidationQuery(validationQuery); datasource.setTestWhileIdle(testWhileIdle); datasource.setTestOnBorrow(testOnBorrow); datasource.setTestOnReturn(testOnReturn); try { datasource.setFilters(filters); } catch (SQLException e) { log.error("druid configuration initialization filter"); } return datasource; } // 配置事物管理器 @Bean(name="transactionManager") public DataSourceTransactionManager transactionManager(){ return new DataSourceTransactionManager(dataSource()); } }