SpringDataJdbc多數據源


代碼基於 SpringBoot + SpringDataJDBC + Mybatis 架構

介紹使用多數據源的關鍵的一些類:AbstractRoutingDataSource繼承實現determineCurrentLookupKey方法,此方法主要返回AbstractRoutingDataSource抽象類的多數據源的Key值

 

提醒:這里主要提醒一下,Spring Aop(AspectJ實現)的攔截方法,@Before@After注解之類的方法的參數可以具有一個 org.aspectj.lang.JoinPoint 類型的形參,而@Around類需要是ProceedingJoinPoint此形參,不要混用(官方說明來源:https://docs.spring.io/spring/docs/5.2.6.RELEASE/spring-framework-reference/core.html#aop-ataspectj-advice-params

 

首先展示下配置文件:application.yml

spring:
  datasource:
    one:
      username: root
      password: root
      jdbc-url: jdbc:mariadb://localhost:3306/myschool
      driver-class-name: org.mariadb.jdbc.Driver
    two:
      username: root
      password: root
      jdbc-url: jdbc:mariadb://localhost:3306/myschool
      driver-class-name: org.mariadb.jdbc.Driver

配置多個數據源:

@Bean(value = "db1")
@ConfigurationProperties(prefix = "spring.datasource.one")
public HikariDataSource dataSource() {
HikariDataSource dataSource = new HikariDataSource();
return dataSource;
}
@Bean(value = "db2")
@ConfigurationProperties(prefix = "spring.datasource.two")
public HikariDataSource dataSource2() {
HikariDataSource dataSource = new HikariDataSource();
return dataSource;
}




下面是多數據源的配置:

 

 

 

動態數據源實現如下:

 

 

 

獲取數據源的目標位置:DataSourceTransactionManager類的doBegin方法

 

 

 

具體可以下載Demo試試:https://github.com/starSmallDream/MySpringDataJdbcAndMybatisByManyDataSource.git

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM