[英]Spring dynamic transaction manager when there are multiple datasources
要求 :
public class EmployeeManagerImpls {
@Autowired
private employeeDao:
@Transactional
public void saveEmployee(Employee e) {
employeeDao.saveEmployee(e);
}
}
Employee Dao 具有根據參數選擇所需數據庫的能力。 (假設它是一種租戶數據庫)有沒有辦法使用 AOP 切換事務管理器?
有幾個步驟可以實現-
使用@Configuration
@EnableTransactionManagement
批注啟用事務管理
使用一些名稱(使用@Qualifier
注釋)定義您的 2 個事務管理器( PlatformTransactionManager
),例如 - txMgr1
, txMgr2
@Transactional("txMgr1)
和@Transactional("txMgr2)
注釋。有關詳細信息,請查看以下鏈接 -
在這種情況下,我更願意使用多個 TransactionTemplates。 您可以在啟動時為每個數據庫創建它們的多個實例,然后將它們作為值放入映射中,該映射的鍵將對應於您的 DTO 可能的“標志值”。 在這種情況下,您將能夠在運行時從該地圖獲取服務中的特定 TransactionTemplate 並使用它。 結果將與使用@Transactional 相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.