Spring boot2.0以上集成Druid连接池及监控信息配置
1. Springboot 2.0选择HikariCP作为默认数据库连接池
理由参考:
https://blog.****.net/user_regist/article/details/80659970
https://blog.****.net/zxl315/article/details/80420688?utm_source=blogxgwz0
2. 数据库连接池性能比对(hikari druid c3p0 dbcp jdbc)
参考:https://blog.****.net/qq_31125793/article/details/51241943
-
本文是集成Druid连接池,数据库为mysql
pom文件添加druid的依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>
application.properties配置文件添加配置项:
# 连接池druid配置
# 初始化连接数
spring.datasource.initialSize=5
# 最小空闲连接数
spring.datasource.minIdle=5
# 最大连接数
spring.datasource.maxActive=20
# 获取连接等待超时的时间
spring.datasource.maxWait=60000
# 间隔60秒执行一次连接回收器
spring.datasource.timeBetweenEvictionRunsMillis=60000
# 5分钟内没有任何操作的空闲连接会被回收
spring.datasource.minEvictableIdleTimeMillis=300000
# 验证连接有效性的sql
spring.datasource.validationQuery=SELECT 1 FROM DUAL
# 空闲时校验,建议开启
spring.datasource.testWhileIdle=true
# 使用中是否检验有效性,推荐关闭
spring.datasource.testOnBorrow=false
# 归还连接时是否检验有效性,推荐关闭
spring.datasource.testOnReturn=false
# 打开PSCache,并且指定每个连接上PSCache的大小
spring.datasource.poolPreparedStatements=false
# 配置监控统计拦截的过滤器,stat用于接收状态,wall用于防止sql注入,logback用于使用logback日志输出
spring.datasource.filters=stat,wall,logback
# sql合并统计,打开mergeSql功能并设置慢sql的时间为
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=1000
# 合并多个DruidDataSource的监控数据
spring.datasource.useGlobalDataSourceStat=true
在启动类或自己新建配置类中,添加代码:
@Bean(destroyMethod = "close",initMethod = "init")
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource druidDatasource()
{
DruidDataSource druidDataSource = new DruidDataSource();
return druidDataSource;
}
/**
* 注册后台界面的Servlet bean, 用于显示后台界面
* @return
*/
@Bean
public ServletRegistrationBean<StatViewServlet> druidStatViewServlet()
{
// 创建StatViewServlet, 映射到/druid/路径下
ServletRegistrationBean<StatViewServlet> servletRegistrationBean = new ServletRegistrationBean<StatViewServlet>(new StatViewServlet(), "/druid/*");
//添加初始化参数:initParams
//白名单:
servletRegistrationBean.addInitParameter("allow","127.0.0.1");
//IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的话提示:Sorry, you are not permitted to view this page.
servletRegistrationBean.addInitParameter("deny","192.168.1.73");
//登录查看信息的账号密码.
servletRegistrationBean.addInitParameter("loginUsername","admin");
servletRegistrationBean.addInitParameter("loginPassword","123456");
//是否能够重置数据.
servletRegistrationBean.addInitParameter("resetEnable","false");
return servletRegistrationBean;
}
/**
* 监听获取应用的数据,Filter用于收集数据, Servlet用于展现数据
* @return
*/
@Bean
public FilterRegistrationBean<WebStatFilter> druidStatFilter()
{
FilterRegistrationBean<WebStatFilter> filterRegistrationBean = new FilterRegistrationBean<WebStatFilter>(new WebStatFilter());
//添加过滤规则.
filterRegistrationBean.addUrlPatterns("/*");
//添加不需要忽略的格式信息.
filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return filterRegistrationBean;
}
注:@ConfigurationProperties注解可能提示需要添加依赖,添加即可(如果没添加的话)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
启动项目发现数据源已改变为druid:
然后访问后台监控页面:http://localhost:8083/druid/
输入刚才配置的用户名密码即可看到监控后台