springboot 1.5.10 整合 Druid 遇到的一些坑

今天想在项目里整合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

 

你可能感兴趣的:(Java)