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

发布于 2022-09-12 23:17:51 字数 3708 浏览 24 评论 0

#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监控页面也看不到数据源信息

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

太阳哥哥 2022-09-19 23:17:51

你的数据源没有配置成功。
第一点,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路径。
如果有疑问,请继续留言。

卷耳 2022-09-19 23:17:51

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

感性不性感 2022-09-19 23:17:51

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文