すでに正常に実装しているspring transactionので、
ではSpring、次の3つの方法でトランザクションを実装できます。
- プラットフォームトランザクション管理。
- 宣言型トランザクション管理。
- プログラマティックトランザクション管理。
実装したものは、XMLを介した宣言型トランザクション管理と呼ばれます。
transactionつまり、SpringのAOP機能による実装を行いました。
構成をXMLベースのAOPtx:advice XML構成と組み合わせると、相乗的な組み合わせが可能になります。たとえば、メソッド名を使用して、そのメソッドに適用するトランザクションの種類を自動的に判断できます。
、、、saveなどmodifyで始まるすべてのメソッドにトランザクションを適用するsavePizza()とsaveColdDrink()しmodifyOrder()ますmodifyBill()。これらについてはadvice、xmlファイルでを定義する必要があります。
<tx:advice id="txAdvice" >
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="modify*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
save上記の行を使用して、またはで始まるメソッドでのみトランザクションが必要であると述べたように、アドバイスは準備ができていmodifyます。pointcut次に、の要素を使用して、どのBeanが上記のアドバイスを必要とするかを示しますaop-config。たとえば、com.mytransaction.serviceパッケージ内で利用可能なすべてのクラスにトランザクションアドバイスを適用するとします。
このために、xmlファイル内に次の行を追加する必要があります。
<aop:config>
<aop:pointcut id="allServices"
expression="execution(*com.mytransaction.service.*.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="allServices"/>
</aop:config>
つまり、<tx:advice>何をするか、またはどのトランザクションの動作を適用するかを意味します。
pointcut内部の要素<aop-config>は、トランザクションを適用する場所を示します。<aop:advisor advice-ref="txAdvice" pointcut-ref="allServices"/>