spring、jdbc、および aop を使用し、m 個のパッケージに n 個のクラスがあり、すべてがデータベース トランザクションに参加している、トランザクション対応のマルチスレッド Java アプリケーションを想像してみてください。ここで、1 つのトランザクション内で任意のクラス セットのスコープを設定する必要があるとします。さらに、スコープ内には、呼び出されたときにトランザクションをコミットするクラス T が常に 1 つあります。
明確にするために例を挙げましょう: パッケージ A、B、Z およびクラス A.Foo、B.Bar、ZT を考えると、それぞれのクラスの次のインスタンスが呼び出されます (おそらく、その間に他のクラスを持つ異なる呼び出し元によって): A. Foo,B.Bar,A.Foo,ZT トランザクションは、ZT が呼び出された後にのみコミットされます。何らかの理由でアプリケーションがシャットダウンした場合、ZT が関与しない限り、トランザクションは決してコミットされません。
インスタンスは互いに呼び出すことができ、既に述べたように、単一のエントリ ポイント (サービス レイヤーなど) からすべてのインスタンスを呼び出す共通のエントリ ポイントはなく、Spring のトランザクション タグの簡単なターゲットになります。
ここで質問です:この問題はアスペクトを使用して解決できますか? もしそうなら、基本的なアプローチは何ですか?ありがとう。