我們有一個用例,我們希望與支持交易的不同數據庫交談,並希望通過Spring提供的註釋來完成交易。@不同數據源的交易註釋
我看到此註釋的工作方式是使用由客戶機定義的DataSource bean選擇PlatformTransactionManager
的默認實現,並與該持久層進行通信。
因此,要與另一個數據源交談,我將不得不提供一個TransactionManager
,它在新數據源的幫助下覆蓋其doBegin
方法。
但是,這裏的問題是,如果我這樣做,那麼@Transaction
註釋就無法知道要選擇哪個數據源(我無法看到引導程序在這些情況下如何工作,因爲我沒有看到一種豆類衝突可能出現的方式 - 也許我在這裏失去了一些東西)。
我能想到的一種替代方法是創建一個新的註解@DataSourceAwareTransaction,它接受默認數據源的參數,並將邏輯寫入新註解中。
這種方法的問題是,我將不得不將所有現有代碼從@Transaction更改爲@DataSourceAwareTransaction。
我描述的方法看起來合理嗎?有沒有人有更好的想法?
謝謝!