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<br>
|
*
|
* @Description: 自定义填充公共 name 字段<br>
|
* @Project: <br>
|
* @CreateDate: Created in 2020/2/4 16:05 <br>
|
* @Author: <a href="4345453@kidgrow.com">liuke</a>
|
*/
|
@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<String, String> initParams = new HashMap<String, String>();
|
//设置忽略请求
|
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());
|
}
|
}
|