springboot+druid+多数据源

这样的博客有很多了,我只是在此记录一下我遇到的问题,如果可以帮助到你,那就很开心了。
本篇文章的重点不是多数据源,而是在多数据源的情况下如何整合阿里的druid。

1. 配置文件(applications.properties文件)

坑0:我是从Hikari数据源改写到druid,Hikari的jdbc的url配置项名称是jdbc-url,而druid直接就是url
坑1:filters这个配置项很关键,它和sql监控有关.那么如何保证sql监控正常运行呢?保证你在新建数据源的时候,成功地绑定上这个配置项了!需要注意的问题就是 比如hlr那个数据库,配置项全名是spring.datasource.hlr.filters,那么对应的数据源@ConfigurationProperties的prefix参数必须是spring.datasource.hlr,假如是spring.datasource就不能绑定成功,结果就是sql监控无法正常显示。你以为这就完了吗,还要注意filter后面的内容,看你使用的日志框架是log4j还是logback,当然你可以先随便写一个,运行之后看控制台日志,如果报错load filter error, filter not found : logback(or log4j),那就已经说明你需要换一个试试了。

#jdbc-url和url还不是一回事,坑
#两个数据库分别是hlr和vlr
spring.datasource.hlr.url=jdbc:mysql://localhost:3306/hlr?serverTimezone=UTC
spring.datasource.hlr.username=root
spring.datasource.hlr.password=123456
spring.datasource.hlr.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.hlr.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.hlr.filters= stat,wall,log4j
spring.datasource.vlr.url=jdbc:mysql://localhost:3306/vlr?serverTimezone=UTC
spring.datasource.vlr.username=root
spring.datasource.vlr.password=123456
spring.datasource.vlr.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.vlr.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.vlr.filters= stat,wall,log4j

2.配置类

hlr的配置类

@Configuration
@MapperScan(basePackages = "com.test.web.mapper.hlrMapper", sqlSessionFactoryRef = "hlrSqlSessionFactory")
public class HlrDataSourceConfiguration {

    @Bean(name = "hlrDataSource")
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource.hlr")
    public DataSource getHlrDataSource(){
       return DruidDataSourceBuilder.create().build();
    }

    @Bean(name = "hlrSqlSessionFactory")
    @Primary
    public SqlSessionFactory hlrSqlSessionFactory(@Qualifier("hlrDataSource") DataSource datasource)
            throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(datasource);

        return bean.getObject();
    }

    @Bean("hlrSqlSessionTemplate")
    @Primary
    public SqlSessionTemplate hlrSqlSessionTemplate(
            @Qualifier("hlrSqlSessionFactory") SqlSessionFactory sessionFactory) {
        return new SqlSessionTemplate(sessionFactory);
    }

}

vlr配置类

@Configuration
@MapperScan(basePackages = "com.test.web.mapper.vlrMapper",sqlSessionFactoryRef = "vlrSqlSessionFactory")
public class VlrDataSourceConfiguration {
    @Bean(name = "vlrDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.vlr")
    public DataSource getVlrDataSource(){
        return DruidDataSourceBuilder.create().build();
    }

    @Bean(name = "vlrSqlSessionFactory")
    public SqlSessionFactory vlrSqlSessionFactory(@Qualifier("vlrDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        return bean.getObject();

    }

    @Bean(name = "vlrSqlSessionTemplate")
    public SqlSessionTemplate vlrSqlSessionTemplate(@Qualifier("vlrSqlSessionFactory")SqlSessionFactory sessionFactory){
        return new SqlSessionTemplate(sessionFactory);
    }
}

3.配置WebStatFilter和StatViewServlet

坑2 :这个坑我到现在还没明白。我测试的时候是单数据源,使用的配置类来配置WebStatFilter和StatViewServlet,成功了。但是多数据源的时候,访问监控页面报错404。后来按网上的方法,在applications.properties文件里直接配置。

# WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter
#是否启用StatFilter默认值true
spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.web-stat-filter.url-pattern=/*
spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.css,*.ico,/druid/*
spring.datasource.druid.web-stat-filter.session-stat-enable=false
spring.datasource.druid.web-stat-filter.session-stat-max-count=1000
spring.datasource.druid.web-stat-filter.principal-session-name=admin
spring.datasource.druid.web-stat-filter.principal-cookie-name=admin
spring.datasource.druid.web-stat-filter.profile-enable=true

# StatViewServlet配置
#展示Druid的统计信息,StatViewServlet的用途包括:1.提供监控信息展示的html页面2.提供监控信息的JSON API
#是否启用StatViewServlet默认值true
spring.datasource.druid.stat-view-servlet.enabled=true
#根据配置中的url-pattern来访问内置监控页面,如果是上面的配置,内置监控页面的首页是/druid/index.html例如:
#http://110.76.43.235:8080/druid/index.html
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
#允许清空统计数据
spring.datasource.druid.stat-view-servlet.reset-enable=true
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=admin
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值