トランザクションをサポートするさまざまなデータベースと話をし、春に提供される注釈を使用してそれをやりたいユースケースがあります。@異なるデータソースを使ったトランザクションアノテーション
このアノテーションが表示される仕組みは、クライアントによって定義されたDataSource Beanを持つPlatformTransactionManager
のデフォルトの実装を選択し、その永続性レイヤーと通信することです。
他のデータソースと話すには、新しいデータソースの助けを借りてdoBegin
メソッドをオーバーライドするTransactionManager
メソッドを提供する必要があります。
しかし、ここで問題になるのは、@Transaction
注釈で選択するデータソースを知る方法がないことです(私には表示されないため、これらのケースでどのようにブートストラップが機能するかはわかりません)。途中の豆の紛争が起きる可能性があります - 多分私はここで何かを逃しています)
代替案は、デフォルトのデータソースのパラメータを受け入れる新しいアノテーション@DataSourceAwareTransactionを作成し、ロジックが新しいアノテーションに書き込まれると考えることができます。
このアプローチの問題は、@Transactionから@DataSourceAwareTransactionに移行するために既存のコードをすべて変更する必要があることです。
私が記述しているアプローチは十分に見えますか?誰か良いアイデアはありますか?
ありがとうございます!