spring事物不起作用
?
1、首先使用如下代碼 確認你的bean 是代理對象嗎?
必須是Spring定義(通過XML或注解定義都可以)的Bean才接受事務。
直接new出來的對象添加事務是不起作用的。
可以通過以下方式判斷是否是代理對象:
?
AopUtils.isAopProxy(Object object)
AopUtils.isCglibProxy(Object object) //cglib
AopUtils.isJdkDynamicProxy(Object object) //jdk動態代理
?
?2、入口函數必須是public,否則事務不起作用。這一點由Spring的AOP特性決定的。
?
?3、切入點配置錯誤。
<!-- 使用annotation注解方式配置事務 -->
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
<!--使用切面方式配置事務-->
<tx:advice id="txadvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" isolation="READ_COMMITTED" propagation="REQUIRED" rollback-for="Java.lang.Exception" />?
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="pointcut" expression="execution(* com.tyyd..*Service.do*(..))"/>
<aop:advisor advice-ref="txadvice" pointcut-ref="pointcut"/>
</aop:config>?
?
4、如果你使用了springmvc,可能是context:component-scan重復掃描引起的:
?
5、如使用MySQL且引擎是MyISAM造成的(因為不支持事務),改成InnoDB即可。
?
6、查看方法寫對沒有,否則攔截不到。
轉載于:https://www.cnblogs.com/h-g-f-s123/p/6504565.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的spring事物不起作用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求幂,我居然又没做出来
- 下一篇: UML--核心元素之包