Spring例外キャプチャおよびロールバックトランザクションソリューション

デフォルトでは、春はキャッチされていないruntimeexcetpionがある場合にのみロールバックします。

最も愚かな方法:コードレベルの制御:TransactionAspectSupport.currentTransactionStatus()。setRollbackOnly();

aop advitorでrollba-for = "java.lang.Exception"が設定されているのに、なぜロールバックされないのですか?

問題が解決しました:

原則:Spring aop例外キャプチャの原則:インターセプトされたメソッドは例外を明示的にスローする必要があり、いかなる方法でも処理できないため、aopエージェントはメソッドの例外をキャッチしてロールバックできます。デフォルトでは、aopは例外のみをキャプチャします。ただし、
<tx:method name = "upd *" propagate = "REQUIRED" rollback-for = "java.lang.Exception" />の構成を通じて、
特定の例外をキャプチャしてロールバックすることができます。

つまり、serviceメソッドでtry catchを使用したり、catchの最後にthrow new runtimeexcetpion()を追加したりしないでください。これにより、プログラムが異常な場合に、aopによってキャッチされてロールバックされる可能性があります。

解決:

解決策1.たとえば、サービスレイヤーがトランザクションを処理する場合、サービス内のメソッドが例外キャプチャを実行しないか、catchステートメントの最後にthrow new RuntimeException()ステートメントが追加され、aopが例外をキャッチして次にロールバックし、サービスの上位層(Webサービスクライアント、ビュー層のアクション)で、この例外をキャッチして処理し続けます

オプション2.サービスレイヤーメソッドのcatchステートメントを追加します。TransactionAspectSupport.currentTransactionStatus()。setRollbackOnly();ステートメント、手動ロールバック。これにより、上位レイヤーが例外を処理する必要がなくなります(現在のプロジェクトアプローチ)。

<bean id="transactionManager"
 class="org.springframework.orm.hibernate3.HibernateTransactionManager">
 <property name="sessionFactory" ref="sessionFactory" />
</bean>

<tx:advice id="txAdvice" transaction-manager="transactionManager">
 <tx:attributes>
  <tx:method name="add*" propagation="REQUIRED" />
  <tx:method name="upd*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
  <tx:method name="del*" propagation="REQUIRED" />
  <tx:method name="*" propagation="SUPPORTS" />
 </tx:attributes>
</tx:advice>

<aop:config>
 <aop:pointcut id="canyin" expression="execution(* com.laphone.base.baseservice.*.*(..)) ||execution(* com.laphone.canyin.*.service.*.*(..)) || execution(* com.laphone.canyin.*.*.service.*.*(..))"/>
 <aop:advisor advice-ref="txAdvice" pointcut-ref="canyin" />
</aop:config>

人生は忍耐と勤勉以上のものです。夢は意味のある追求です。
最後に、あなたの研究の早い段階での成功、満足のいくオファー、迅速な昇進と給料の引き上げ、そして人生の頂点に到達することを願っています。
小さなアシスタントvxを追加するためにコースウェアのソースコードソフトウェアやその他の資料が必要な場合:xcw18874131605(注:CSDN

おすすめ

転載: blog.csdn.net/p1830095583/article/details/115255606