私の知る限り、Spring は JDK を使用してインターフェイスを実装するクラスの動的プロキシを生成し、Cglib を使用してインターフェイスを実装しないクラスの動的プロキシを生成します。宣言型トランザクションの場合、Spring はプロキシを使用してトランザクションの側面を追加します。以下のコードを見てください。
interface Demo {
void methodA();
}
public class DemoImpl implements Demo{
@Transactional
public void updateA() {}
@Transactional
public void updateB() {}
}
updateA はトランザクションでうまく機能すると思います。しかし、updateB メソッドはどうでしょうか。@Transactional はそれに対して機能しますか? 多分私の理解は正しくありません。Spring が JDK/cglib を使用してクラスとインターフェースをプロキシする方法を説明するために、関連する Spring ソース コードが提供されていると便利です。ありがとう
私はxmlに設定を持っています:
<tx:annotation-driven transaction-manager="transactionManager" />