すでに正常に実装している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"/>