次の XML ベースのトランザクション AOP を Java 経由でプログラムでセットアップしたいと思います。
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:advisor id="managerTx" advice-ref="txAdvice" pointcut="execution(* *..service.*Manager.*(..))" order="2"/>
</aop:config>
これまでのところ、私は次のものを持っています。次のようなエクスプレッション ポイントカットを作成できます。
AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();
pointcut.setExpression("execution(* *..service.*Manager.*(..))");
AspectJPointcutAdvisor
次に、との組み合わせを使用しAspectJAroundAdvice
て、実際のアドバイスを設定できます。
tx
しかし、名前空間を支える Spring コードを見ると、TransactionInterceptor
が作成されているようです。たぶん、私はこれをすべて間違って見ています。
なぜ私はこれをしたいのですか?
さて、Spring 構成を XML から @Configuration クラスに移動しましたが、tx 名前空間のものを変換する方法に行き詰まっています。私は注釈を使用し@EnableTransactionManagement
て@Transactional
いますが、上記のポイントカット式に一致するすべてのメソッドに注釈を追加するのはリスクが高すぎます。私は何かを逃すにちがいありません。