springboot2.0整合druid,怎么检测是否整合成功了???

孤狼独闯天宇
  • 930
#spring配置
spring:
   application:
      name: gxc-webapp  #应用名
   datasource: #【配置数据源】
      type: com.alibaba.druid.pool.DruidDataSource
      driver-class-name: com.mysql.cj.jdbc.Driver
      druid:
         db1: # 数据源1
            jdbc-url: jdbc:mysql://localhost:3306/user-info?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
            username: root
            password: root
            initialization-mode: always
            # 初始连接数
            initial-size: 5
            # 最大连接池数量
            max-active: 10
            # 最小连接池数量
            min-idle: 5
            # 配置获取连接等待超时的时间
            max-wait: 60000
            # 打开PSCache,并且指定每个连接上PSCache的大小
            pool-prepared-statements: true
            max-pool-prepared-statement-per-connection-size: 20
            # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
            timeBetweenEvictionRunsMillis: 60000
            # 配置一个连接在池中最小生存的时间,单位是毫秒
            min-evictable-idle-time-millis: 300000
            validation-query: SELECT 1 FROM DUAL
            #是否在连接空闲一段时间后检测其可用性
            test-while-idle: true
            #是否在获得连接后检测其可用性
            test-on-borrow: false
            #是否在连接放回连接池后检测其可用性
            test-on-return: false

         db2: # 数据源2
            jdbc-url: jdbc:mysql://localhost:3306/colleges?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
            username: root
            password: root
            initialization-mode: always
            # 初始连接数
            initial-size: 5
            # 最大连接池数量
            max-active: 10
            # 最小连接池数量
            min-idle: 5
            # 配置获取连接等待超时的时间
            max-wait: 60000
            # 打开PSCache,并且指定每个连接上PSCache的大小
            pool-prepared-statements: true
            max-pool-prepared-statement-per-connection-size: 20
            # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
            timeBetweenEvictionRunsMillis: 60000
            # 配置一个连接在池中最小生存的时间,单位是毫秒
            min-evictable-idle-time-millis: 300000
            validation-query: SELECT 1 FROM DUAL
            #是否在连接空闲一段时间后检测其可用性
            test-while-idle: true
            #是否在获得连接后检测其可用性
            test-on-borrow: false
            #是否在连接放回连接池后检测其可用性
            test-on-return: false

配置了一个多数据源,切换数据源是正常的,我现在想知道使用druid初始化的连接池是否成功了,是不是上面配置的初始化大小怎么检测???

网上查了一下,应用启动时,日志并没有出现

com.alibaba.druid.pool.DruidDataSource - {dataSource-1} inited

所以我怀疑druid根本没有初始化连接池

druid配置

@Configuration
public class DruidConfig {
    /**
     * 配置 Druid 监控界面
     */
    @Bean
    public ServletRegistrationBean statViewServlet(){
        ServletRegistrationBean srb =
                new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
        //设置控制台管理用户
        srb.addInitParameter("loginUsername","root");
        srb.addInitParameter("loginPassword","root");
        //是否可以重置数据
        srb.addInitParameter("resetEnable","false");
        return srb;
    }

    /**
     * 配置web监控的filter
     * @return
     */
    @Bean
    public FilterRegistrationBean webStatFilter(){
        FilterRegistrationBean bean = new FilterRegistrationBean();
        bean.setFilter(new WebStatFilter());
        Map<String,String> initParams = new HashMap<>();
        initParams.put("exclusions","/static/*,*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");//过滤掉需要监控的文件
        bean.setInitParameters(initParams);
        bean.setUrlPatterns(Arrays.asList("/*"));
        return  bean;
    }

    @Bean
    public DataSource druidDataSource(){
        return new DruidDataSource();
    }
}

打开druid监控页面也看不到数据源信息

回复
阅读 691
3 个回答

你的数据源没有配置成功。
第一点,durid单数据源默认扫描的配置是spring.datasource.druid.,你配置多数据源之后的配置是spring.datasource.druid.db1.,所以无法自动注入配置。
第二点,你的DruidConfig 类也没有实例化两个数据源,正确的代码如下

 @Primary
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.druid.db1")
    public DataSource primaryDataSource() {
       // return DataSourceBuilder.create().build();
        return  new DruidDataSource();
    }

    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.druid.db2")
    public DataSource secondaryDataSource() {
       // return DataSourceBuilder.create().build();
        return  new DruidDataSource();
    }

其中@Primary是必须的,是程序在启动时默认装配的bean。
此外,你还要配置这两个数据源扫描的mapper路径。
如果有疑问,请继续留言。

你启动后查询数据库 就知道成没成

这里会显示你的数据库连接信息
image.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏