springboot基于配置集成druid连接池

2020年07月05日 未雨晴空 0评论 1424阅读 0喜欢

引入jar包

官方给出druid-spring-boot-starter的版本已经是1.1.17。推荐引入最新的,解决了一些已知的问题。


    com.alibaba
    druid-spring-boot-starter
    1.1.10

application.properties增加druid相关配置

需要注意的地方是mysql的驱动类在mysql8.0之后的路径改变了以及需要声明时区的问题。下面也标出了mysql版本驱动类的区别,同时也注明了MySql和Oracle在部分参数的区别。

## database ##
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
## mysql-5.5.0 ##
#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8
## mysql-8.0.16 ##
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3307/test?serverTimezone=UTC&characterEncoding=UTF-8
spring.datasource.username=xxxx
spring.datasource.password=xxxx
#申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。default=true
spring.datasource.druid.test-on-borrow=false
#建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。default=false
spring.datasource.druid.test-while-idle=false
#归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。default=false
 spring.datasource.druid.test-on-return=false
#用来检测连接是否有效的sql,要求是一个查询语句,mysql常用 select 'x';oracle中常用 select 1 from dual;,
spring.datasource.druid.validation-query=SELECT 1
spring.datasource.druid.validation-query-timeout=1000
#druid->StatFilter:用于统计监控信息
#druid控制台管理用户名
spring.datasource.druid.stat-view-servlet.login-username=admin
#druid控制台管理用户名密码
spring.datasource.druid.stat-view-servlet.login-password=admin
#白名单
spring.datasource.druid.stat-view-servlet.allow=127.0.0.1
#黑名单(当白名单和黑名单存在共同时,deny优先于allow,如果满足deny的即提示:Sorry, you are not permitted to view this page.)
spring.datasource.druid.stat-view-servlet.deny=192.168.1.100
#是否能够重置数据.
spring.datasource.druid.stat-view-servlet.reset-enable=false
#添加不需要忽略的格式信息.
spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
#添加过滤规则.
spring.datasource.druid.web-stat-filter.url-pattern=/*

其他的一些配置信息

关于下面该配置,如果需要用到了添加到配置文件即可

#初始化时建立物理连接的个数
spring.datasource.druid.initial-size=5
#最小连接池数量
spring.datasource.druid.min-idle=5
#最大连接池数量 maxIdle已经不再使用
spring.datasource.druid.max-active=20
#获取连接时最大等待时间,单位毫秒
spring.datasource.druid.max-wait=60000
#既作为检测的间隔时间又作为testWhileIdel执行的依据
spring.datasource.druid.time-between-eviction-runs-millis=60000
#销毁线程时检测当前连接的最后活动时间和当前时间差大于该值时,关闭当前连接
spring.datasource.druid.min-evictable-idle-time-millis=30000
spring.datasource.druid.keep-alive=true
#要求程序从池中get到连接后, N 秒后必须close,否则druid 会强制回收该连接,不管该连接中是活动还是空闲, 以防止进程不会进行close而霸占连接。
spring.datasource.druid.remove-abandoned=true
#设置druid 强制回收连接的时限,当程序从池中get到连接开始算起,超过此值后,druid将强制回收该连接,单位秒。
spring.datasource.druid.remove-abandoned-timeout=180
#当druid强制回收连接后,是否将stack trace 记录到日志中
spring.datasource.druid.log-abandoned=true
#当数据库抛出不可恢复的异常时,抛弃该连接
spring.datasource.druid.exception-sorter=true
#是否缓存preparedStatement,mysql5.5+建议开启
spring.datasource.druid.pool-prepared-statements=true
#当值大于0时poolPreparedStatements会自动修改为true
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
#配置扩展的插件,stat是监控统计拦截的filters,去掉后监控界面sql无法统计;wall则用于防火墙
spring.datasource.druid.filters=stat,wall
#通过connectProperties属性来打开mergeSql功能;慢SQL记录
spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
#合并多个DruidDataSource的监控数据
spring.datasource.druid.use-global-data-source-stat=true

druid监控平台

访问http://localhost:8080/druid/datasource.html,页面显示如下:

在这里插入图片描述由于spring.datasource.druid.test-while-idle默认值是true,我这里在配置文件里面修改成false,目的是看配置文件里面的参数是否生效,从上图中可以看出TestWhileIdle变成false了,修改生效。

参考资料

关于druid配置的常见问题
springboot集成druid官方文档

发表评论 取消回复

电子邮件地址不会被公开。

请输入以http或https开头的URL,格式如:https://oneisall.top