spring.datasource
.primary
.url=jdbc:mysql://localhost:3306/test1
spring.datasource
.primary
.username=root
spring.datasource
.primary
.password=root
spring.datasource
.primary
.driver-class-name=com
.mysql
.jdbc
.driver
spring.datasource
.secondary
.url=jdbc:mysql://localhost:3306/test2
spring.datasource
.secondary
.username=root
spring.datasource
.secondary
.password=root
spring.datasource
.secondary
.driver-class-name=com
.mysql
.jdbc
.driver
@configuration
public
class
datasourceconfig
@bean(name = "secondarydatasource")
@qualifier("secondarydatasource")
@configurationproperties(prefix="spring.datasource.secondary")
public datasource secondarydatasource()
}
在springboot中對jdbctemplate的支援比較簡單,只需要為其注入對應的datasource即可
@bean(name = "primaryjdbctemplate")
public jdbctemplate primaryjdbctemplate(
@qualifier("primarydatasource" datasource datasource)
@bean(name = "secondaryjdbctemplate")
public jdbctemplate secondaryjdbctemplate(
@qualifier("secondarydatasource" datasource datasource)
這樣配置便將不同的資料來源配置到不同的jdbctemplate中了,使用時運用@autowired註解搭配@qualifier即可
public
class
templateservice
jpa支援的多資料來源配置,對於datasource 的配置如上方jdbctemplate 所示相同,並且對每乙個jpa配置都要搭配乙個配置類,在類中需要注意書寫正確資料來源對應的entity實體類和repository
/**
*@author:高鍵城
*@time:
*@discription:jpa對資源的配置
*/@configuration
@enabletransactionmanagement
@enablejparepositories(
entitymanage***ctoryref = "entitymanage***ctoryprimary",
transactionmanagerref = "transactionmanagerprimary",
basepackages = //設定repository所在位置
)public
class
primaryconfig
@primary
@bean(name = "entitymanage***ctoryprimary")
public localcontainerentitymanage***ctorybean entitymanage***ctorybean(entitymanage***ctorybuilder builder)
private mapgetvendorproperties(datasource datasource)
@primary
@bean(name = "transactionmanagerprimary")
public platformtransactionmanager transactionmanagerprimary(entitymanage***ctorybuilder builder)
}
要注意的就是書寫正確實體類和repository的位置,按照上面的內容書寫號實體類管理器等內容。
配置第二個資料來源的時候,不同的就是datasource 注入的名稱,從primarydatasource 改為 secondarydatasource
接下來編寫實體類的資訊
/**
*實體類user
*/@entity
public
class
user
public
user(string name, integer age)
// 省略getter、setter
}
編寫對應的repository
@repository
public
inte***ce
userrepository
extends
jparepository
最後我們用junit來進行測試
@runwith(springjunit4classrunner.class)
public
class
@autowired
private userrepository userrepository;
@autowired
private messagerepository messagerepository;
@test
public
void
test() throws exception
}
輕鬆實現SpringBoot實現多資料來源與事物處理
歡迎進入我的部落格,樂於分享是一種美德 首先啟動類所在的包一定要放在其他的類的父包中,這樣容易讓啟動類掃瞄到其他的類,不需要多餘的配置了 事物管理 事物原理 事物分類 單事物處理 單資料來源 同乙個專案 連線乙個資料庫 直接在需要加註解的方法 上面加上乙個註解 transactional 類 ind...
springboot中實現多資料來源
基於aop動態的切換的資料來源 3.1 原理介紹3.2 示例 a 配置檔案spring.aop.proxy target class true spring.aop.auto true spring.datasource.druid.db1.url spring.datasource.druid.d...
Spring Boot多資料來源配置
方案實現 新建兩個配置類 即加 configuration註解的類 乙個為primarydatasourceconfig,用來配置本專案的資料來源 另乙個叫seconddatasourceconfig,用來配置需要同步的資料來源。如下 configuration public class prima...