|
@ -1,22 +1,22 @@
|
|
|
package com.yihu.wlyy.statistics.config;
|
|
|
|
|
|
import com.alibaba.druid.filter.stat.StatFilter;
|
|
|
import com.alibaba.druid.pool.DruidDataSource;
|
|
|
import com.alibaba.druid.support.http.StatViewServlet;
|
|
|
import com.alibaba.druid.support.http.WebStatFilter;
|
|
|
import org.springframework.beans.factory.annotation.Qualifier;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
|
|
|
import org.springframework.boot.context.embedded.FilterRegistrationBean;
|
|
|
import org.springframework.boot.context.embedded.ServletRegistrationBean;
|
|
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
|
|
import org.springframework.context.annotation.Bean;
|
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
import org.springframework.context.annotation.Primary;
|
|
|
import com.alibaba.druid.support.http.StatViewServlet;
|
|
|
import com.alibaba.druid.support.http.WebStatFilter;
|
|
|
|
|
|
import javax.sql.DataSource;
|
|
|
import java.sql.SQLException;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
import java.util.Properties;
|
|
|
|
|
|
/**
|
|
|
* Created by Administrator on 2016.10.20.
|
|
@ -61,22 +61,21 @@ public class DataSourceConfig {
|
|
|
private String filters;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Value("${spring.datasource.primaryReadWrite.url}")
|
|
|
private String primaryReadWriteUrl;
|
|
|
@Value("${spring.datasource.primaryReadWrite.username}")
|
|
|
private String primaryReadWriteUsername;
|
|
|
@Value("${spring.datasource.primaryReadWrite.password}")
|
|
|
private String primaryReadWritePassword;
|
|
|
|
|
|
/**
|
|
|
* 主数据源
|
|
|
* 主数据源
|
|
|
*
|
|
|
* @return
|
|
|
*/
|
|
|
@Bean(name = "primaryReadWrite")
|
|
|
@Primary//主库 默认不写名字用这个
|
|
|
public DataSource primaryReadWriteDataSource() throws SQLException {
|
|
|
public DataSource primaryReadWriteDataSource(StatFilter statFilter) throws SQLException {
|
|
|
DruidDataSource datasource = new DruidDataSource();
|
|
|
datasource.setUrl(primaryReadWriteUrl);
|
|
|
datasource.setUsername(primaryReadWriteUsername);
|
|
@ -100,11 +99,16 @@ public class DataSourceConfig {
|
|
|
datasource.setRemoveAbandonedTimeout(removeAbandonedTimeout);
|
|
|
datasource.setLogAbandoned(logAbandoned);
|
|
|
datasource.setFilters(filters);
|
|
|
datasource.setConnectProperties(properties());//;# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
|
|
|
datasource.setUseGlobalDataSourceStat(true);// 合并多个DruidDataSource的监控数据
|
|
|
|
|
|
List proxyFilters = new ArrayList<>();
|
|
|
proxyFilters.add(statFilter);
|
|
|
datasource.setProxyFilters(proxyFilters);
|
|
|
return datasource;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Value("${spring.datasource.primaryRead.url}")
|
|
|
private String primaryReadUrl;
|
|
|
@Value("${spring.datasource.primaryRead.username}")
|
|
@ -113,7 +117,7 @@ public class DataSourceConfig {
|
|
|
private String primaryReadPassword;
|
|
|
|
|
|
@Bean(name = "primaryRead")
|
|
|
public DataSource primaryReadDataSource() throws SQLException {
|
|
|
public DataSource primaryReadDataSource(StatFilter statFilter) throws SQLException {
|
|
|
DruidDataSource datasource = new DruidDataSource();
|
|
|
datasource.setUrl(primaryReadUrl);
|
|
|
datasource.setUsername(pprimaryReadUsername);
|
|
@ -137,7 +141,12 @@ public class DataSourceConfig {
|
|
|
datasource.setRemoveAbandonedTimeout(removeAbandonedTimeout);
|
|
|
datasource.setLogAbandoned(logAbandoned);
|
|
|
datasource.setFilters(filters);
|
|
|
datasource.setConnectProperties(properties());//;# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
|
|
|
datasource.setUseGlobalDataSourceStat(true);// 合并多个DruidDataSource的监控数据
|
|
|
|
|
|
List proxyFilters = new ArrayList<>();
|
|
|
proxyFilters.add(statFilter);
|
|
|
datasource.setProxyFilters(proxyFilters);
|
|
|
return datasource;
|
|
|
}
|
|
|
|
|
@ -148,8 +157,10 @@ public class DataSourceConfig {
|
|
|
private String imUsername;
|
|
|
@Value("${spring.datasource.im.password}")
|
|
|
private String imPassword;
|
|
|
|
|
|
@Bean(name = "imData")
|
|
|
public DataSource imDataSource()throws SQLException {DruidDataSource datasource = new DruidDataSource();
|
|
|
public DataSource imDataSource(StatFilter statFilter) throws SQLException {
|
|
|
DruidDataSource datasource = new DruidDataSource();
|
|
|
datasource.setUrl(imUrl);
|
|
|
datasource.setUsername(imUsername);
|
|
|
datasource.setPassword(imPassword);
|
|
@ -172,35 +183,59 @@ public class DataSourceConfig {
|
|
|
datasource.setRemoveAbandonedTimeout(removeAbandonedTimeout);
|
|
|
datasource.setLogAbandoned(logAbandoned);
|
|
|
datasource.setFilters(filters);
|
|
|
datasource.setConnectProperties(properties());//;# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
|
|
|
datasource.setUseGlobalDataSourceStat(true);// 合并多个DruidDataSource的监控数据
|
|
|
|
|
|
List proxyFilters = new ArrayList<>();
|
|
|
proxyFilters.add(statFilter);
|
|
|
datasource.setProxyFilters(proxyFilters);
|
|
|
return datasource;
|
|
|
}
|
|
|
|
|
|
private Properties properties() {
|
|
|
Properties properties = new Properties();
|
|
|
properties.put("druid.stat.mergeSql", "true");
|
|
|
properties.put("slowSqlMillis", "1000");
|
|
|
return properties;
|
|
|
}
|
|
|
|
|
|
|
|
|
//------------------------------------druid 监控----------------------------------------------
|
|
|
@Bean
|
|
|
public ServletRegistrationBean statViewServlet(){
|
|
|
public ServletRegistrationBean statViewServlet() {
|
|
|
//创建servlet注册实体
|
|
|
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
|
|
|
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
|
|
|
//设置ip白名单
|
|
|
//servletRegistrationBean.addInitParameter("allow","127.0.0.1");
|
|
|
//设置ip黑名单,如果allow与deny共同存在时,deny优先于allow
|
|
|
// servletRegistrationBean.addInitParameter("deny","192.168.0.19");
|
|
|
// servletRegistrationBean.addInitParameter("deny","192.168.0.19");
|
|
|
//设置控制台管理用户
|
|
|
servletRegistrationBean.addInitParameter("loginUsername","jkzl");
|
|
|
servletRegistrationBean.addInitParameter("loginPassword","jkzlehr");
|
|
|
servletRegistrationBean.addInitParameter("loginUsername", "jkzl");
|
|
|
servletRegistrationBean.addInitParameter("loginPassword", "jkzlehr");
|
|
|
//是否可以重置数据
|
|
|
servletRegistrationBean.addInitParameter("resetEnable","false");
|
|
|
servletRegistrationBean.addInitParameter("resetEnable", "false");
|
|
|
return servletRegistrationBean;
|
|
|
}
|
|
|
|
|
|
@Bean
|
|
|
public FilterRegistrationBean statFilter(){
|
|
|
public FilterRegistrationBean filterRegistrationBean(WebStatFilter webStatFilter) {
|
|
|
//创建过滤器
|
|
|
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
|
|
|
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(webStatFilter);
|
|
|
//设置过滤器过滤路径
|
|
|
filterRegistrationBean.addUrlPatterns("/*");
|
|
|
//忽略过滤的形式
|
|
|
filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
|
|
|
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
|
|
|
return filterRegistrationBean;
|
|
|
}
|
|
|
|
|
|
@Bean
|
|
|
public StatFilter statFilter() {
|
|
|
return new StatFilter();
|
|
|
}
|
|
|
|
|
|
@Bean
|
|
|
public WebStatFilter webStatFilter() {
|
|
|
return new WebStatFilter();
|
|
|
}
|
|
|
//------------------------------------druid 监控----------------------------------------------
|
|
|
}
|