Springboot多數據源配置

本次文檔以oracle數據庫配置爲案例,在Springboot項目中,使用alibaba完成多數據源配置。先附上目錄結構。

配置多數據源有兩種,一種是通過命名規則來自動選擇數據庫連接池。另一種是制定固定目錄下的文件是使用哪個連接池。本人傾向於第二種,這樣要更換連接池的時候只需要移動文件目錄即可。而且也不用在mapper文件限制了程序員的命名。

在這次案例中,我指定mapper下每個文件夾就是一個連接池,hczz是一個連接池,jq是一個連接池。

一、配置文件添加相關配置

相關參數如果不明白意思,可以百度一下,敲打過程中沒有代碼提示也不用緊張。

在這裏,以防配置錯誤,貼上代碼。

spring:

datasource:

    type: com.alibaba.druid.pool.DruidDataSource

    driver-class-name: oracle.jdbc.OracleDriver

druid:

   hczz:

      url:

      username:

      password:

     initial-size: 5

      max-active: 5

      min-idle: 5

     max-wait: 60000

     pool-prepared-statements: true

     max-pool-prepared-statement-per-connection-size: 20

     validation-query: SELECT 1 FROM DUAL

     test-while-idle: true

      test-on-borrow: false

      time-between-eviction-runs-millis: 300000

      soft-min-evictable-idle-time-millis: 600000

 備註:

1.hczz即是第一個數據庫,也是主數據庫,可自己定義名字

2.以下兩句必須要配置,不然8小時後,或者更短,系統將會因爲數據庫沒有正常關閉而引起宕機

time-between-eviction-runs-millis: 300000

   soft-min-evictable-idle-time-millis: 600000

 

二、配置數據源

備註:配置數據源要至少要配置一個主數據源,副數據源可多個

2.1配置主數據庫連接池

注意細節!注意細節!

@Configuration

@MapperScan(basePackages = "com.ccf.mapper.hczz",sqlSessionTemplateRef = "hczzSqlSessionTemplate")

public class HczzDataSourceConfig {

 

@Bean("hczz")

@Primary

@ConfigurationProperties(prefix = "spring.dataSource.druid.hczz")

public DataSource hczzDataSource(){

System.out.println("hczz DataSource");

return DataSourceBuilder.create().build();

}

 

@Bean("hczzSqlSessionFactory")

@Primary

public SqlSessionFactory sqlSessionFactory(@Qualifier("hczz") DataSource dataSource)throws Exception{

SqlSessionFactoryBean bean = new SqlSessionFactoryBean();

bean.setDataSource(dataSource);

bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/hczz/*.xml"));

bean.setConfigLocation(new ClassPathResource("mybatis-config.xml"));

return bean.getObject();

}

 

@Bean("hczzTransactionManager")

@Primary

public DataSourceTransactionManager transactionManager(@Qualifier("hczz") DataSource dataSource) throws Exception{

return new DataSourceTransactionManager(dataSource);

}

 

@Bean("hczzSqlSessionTemplate")

@Primary

public SqlSessionTemplate sqlSessionTemplate(@Qualifier("hczzSqlSessionFactory") SqlSessionFactory sqlSessionFactory)throws Exception{

return new SqlSessionTemplate(sqlSessionFactory);

}

}

 

2.2配置副連接池

配置多副連接池有的是使用通配的方式注入,這樣就不用寫太多的配置文件,但由於本人在配置的過程中遇到一些問題,而且如果是有mysql連接池,也有oracle連接池,這樣要指定不同的配置文件會比較麻煩。項目需要也不會一次性太多連接池,太多連接池那還不如開多個項目實現業務分離。

 

 

配置文件的配置跟主數據源配置一樣。這裏省略。

 

 

跟主數據庫相比,少了@Primary註解。

寫得比較粗糙,有寫得錯誤的或者有更好方法,歡迎評論、聯繫交流。

代碼在https://download.csdn.net/download/linbyte/10874327 僅作爲學習交流用途,禁止用於任何商業用途。

聯繫QQ:694335719

微信:lin69335719(請標明添加好友原因)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章