spring boot中如何实现druid多数据源配置

这篇文章主要为大家展示了“spring boot中如何实现druid多数据源配置”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“spring boot中如何实现druid多数据源配置”这篇文章吧。

application.yml

mybatis:
  configLocation: classpath:mybatis_config.xml
spring:
  #  data:
  #    mongodb:
  #      host: 10.0.5.126
  #      port: 27017
  #      database: xx
  #authentication-database: xx
  #password:
  #username:
  datasource:
    druid:
      min-idle: 3
      initial-size: 5
      max-active: 10
      # 连接等待超时时间
      max-wait: 10000
      # 配置检测可以关闭的空闲连接间隔时间
      time-between-eviction-runs-millis: 60000
      # 配置连接在池中的最小生存时间
      min-evictable-idle-time-millis: 300000
      validation-query: select '1'
      test-while-idle: true
      test-on-borrow: true
      test-on-return: false
      # 打开PSCache,并且指定每个连接上PSCache的大小
      pool-prepared-statements: true
      max-open-prepared-statements: 20
      max-pool-prepared-statement-per-connection-size: 20
      filter:
        stat:
          merge-sql: true
          # 慢日志查询
          log-slow-sql: true
          # 慢SQL记录超过5秒的sql在druid控制台标红
          slow-sql-millis: 5000
        wall:
          enabled: false
        commons-log:
          enabled: false
        log4j:
          connection-log-enabled: false
        slf4j:
          statement-log-enabled: false
        log4j2:
          statement-log-enabled: false
      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 如果项目用的logback则删掉log4j
      filters: stat,wall
      # 配置Druid Spring监控切面
      #      aop-patterns: com.xitor.service.*,com.xonitor.schedule.*,com.xonitor.controller.*
      # 配置DruidStatFilter
      web-stat-filter:
        enabled: true
        url-pattern: "/*"
        exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*,/slife_server/druid/*"
      # 配置DruidStatViewServlet
      stat-view-servlet:
        enabled: true
        url-pattern: "/druid/*"
        allow: ""  # allow: 127.0.0.1,192.168.163.1 IP白名单(没有配置或者为空,则允许所有访问)
        # IP黑名单 (存在共同时,deny优先于allow)
        #        deny: 192.168.1.73
        #  禁用HTML页面上的“Reset All”功能 true是不禁用
        reset-enable: true
        login-username: admin
        login-password: xx
      use-global-data-source-stat: false
      clear-filters-enable: true
      time-between-log-stats-millis: 3600000 #配置每1小时输出一次统计日志,统计后将清空日志
    oms:
      name: oms
      driver-class-name: org.postgresql.Driver
      type: com.alibaba.druid.pool.DruidDataSource
      url: jdbc:postgresql://127.0.0.1:5432/eagle
      username: xx
      password: xx
    star-talk:
      name: starTalk
      driver-class-name: org.postgresql.Driver
      type: com.alibaba.druid.pool.DruidDataSource
      url: jdbc:postgresql://10.0.5.105:5432/ejabberd
      username: xx
      password: xx
    logging:
      name: logging
      driver-class-name: org.postgresql.Driver
      type: com.alibaba.druid.pool.DruidDataSource
      url: jdbc:postgresql://127.0.0.1:5432/eagle
      username: xx
      password: xx
    wpms: 
      name: wpms
      driver-class-name: oracle.jdbc.driver.OracleDriver
      type: com.alibaba.druid.pool.DruidDataSource
      url: jdbc:oracle:thin:@localhost:1521:ORCL
      username: xx
      password: xx

DataSourceConfigurer

@Configuration
public class OMSDataSourceConfigurer {

    @Value("${mybatis.configLocation}")
    private Resource configLocation;

    @Primary
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.oms")
    public DataSourceProperties omsDataSourceProperties() {
        return new DataSourceProperties();
    }

    @Bean(initMethod = "init")
    @Primary
    @ConfigurationProperties("spring.datasource.druid")
    public DruidDataSource omsDataSource(@Qualifier("omsDataSourceProperties") DataSourceProperties dataSourceProperties) {
        return (DruidDataSource) dataSourceProperties.initializeDataSourceBuilder()
                .build();
    }

    @Bean
    @Primary
    public SqlSessionFactory omsSqlSessionFactory(@Qualifier("omsDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        Assert.notNull(this.configLocation, "");
        Assert.isTrue(this.configLocation.exists(), "");
        bean.setConfigLocation(configLocation);
        bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mybatis_mapper/oms/*.xml"));
        return bean.getObject();
    }

    @Bean
    @Primary
    public DataSourceTransactionManager omsTransactionManager(@Qualifier("omsDataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }

    @Bean
    @Primary
    public SqlSessionTemplate omsSqlSessionTemplate(@Qualifier("omsSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionTemplate(sqlSessionFactory);
    }


}

WPMSDataSourceConfigurer

与上面配置相同,不要添加 @Primary

MybatisConfigurer

@Configuration
@ComponentScan("com.gridvo.eagle.repository")
@MapperScan(basePackages = "com.xx.mybatis.oms.dao", sqlSessionTemplateRef = "omsSqlSessionTemplate")
@MapperScan(basePackages = "com.xx.mybatis.startalk.dao", sqlSessionTemplateRef = "starTalkSqlSessionTemplate")
@MapperScan(basePackages = "com.xx.mybatis.logging.dao", sqlSessionTemplateRef = "loggingSqlSessionTemplate")
@MapperScan(basePackages = "com.xxmybatis.wpms.dao", sqlSessionTemplateRef = "wpmsSqlSessionTemplate")
@EnableTransactionManagement(proxyTargetClass = true)
public class MybatisConfigurer {

}

以上是“spring boot中如何实现druid多数据源配置”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/225767.html

(0)
上一篇 2022年1月8日
下一篇 2022年1月8日

相关推荐

发表回复

登录后才能评论