67,512
社区成员
发帖
与我相关
我的任务
分享
<tx:attributes>
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="get*" propagation="SUPPORTS" read-only="true" />
<tx:method name="find*" propagation="SUPPORTS" read-only="true" />
<tx:method name="select*" propagation="SUPPORTS" read-only="true" />
<tx:method name="load*" propagation="SUPPORTS" read-only="true" />
<!-- 其他采用默认事务方式 -->
<tx:method name="*" />
</tx:attributes>
这个时候如果你server遇到异常,并且你自己不try catch来处理异常,spring就会给你回滚事物。但是如果你自己手动把异常给处理啦,加上啦try catch,spring不知道你方法异常就不会回滚事物啦。这个时候你可以在catch里面手动抛出异常new throw 异常来回滚事物,也可以TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();来手动的回滚事物。
spring默认会对继承自runtimeexception或error的是非检查型异常进行回滚,如果你要手动配置其它异常也回滚事物,配置上rollback-for就好。
具体的,自己写一个测试就OK啦,各种情况,各种异常试一试!