今天想在项目里整合druid,可能是我用的springboot比较新的原因(1.5.10),我用的配置文件是yml类型的,和普通的Properties配置文件相比,yml的配置是有结构的树状排列的,可读性更好。
我的IDEA的智能提示的JDBC配置默认的是tomcat连接池,因为springboot1.5之后默认的jdbc为tomcat可能是这个原因导致我的druid配置并不生效。
所以没有办法只能选了个这种的方法,自己重写DataSource类的工厂方法,不知道这个说法对不对,就是在一个返回值为DataSource的方法上加上@Bean注解,根据Spring的生成SpringBean的原理,一个接口的实现类或者一个类只能有一个对象,所以我们可以自己写个创建DataSource的方法然后让Spring加载的时候将我们写的实例出来就行了。@Primary注解,可以在自动装配存在多个子类时,提高被加注解的实例方法的优先级,最好加上。
#datasource
spring:
datasource:
name: dev
url: jdbc:mysql://127.0.0.1:3306/hm_crm_dev?useUnicode=true&characterEncoding=utf8
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
######################### Druid连接池的配置信息 #################
type: com.alibaba.druid.pool.DruidDataSource
# 下面为连接池的补充设置,应用到上面所有数据源中
# 初始化大小,最小,最大
initialSize: 5
minIdle: 5
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT'x'
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
# 打开PSCache,并且指定每个连接上PSCache的大小
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙,此处是filter修改的地方
filters: stat,wall,slf4j
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# 合并多个DruidDataSource的监控数据
# useGlobalDataSourceStat: true