一个分享个人学习、开发经验的Blog,http://www.joyphper.net

Spring事务传播行为@Transactional说明

posted @ 2012-07-04 23:10 | 阅读:4189 | 评论:1 | 分类: Java

在service类前加上@Transactional,声明这个service所有方法需要事务管理。每一个业务方法开始时都会打开一个事务。

Spring默认情况下会对运行期例外(RunTimeException)进行事务回滚。这个例外是unchecked

如果遇到checked意外就不回滚。

如何改变默认规则:

1 让checked例外也回滚:在整个方法前加上 @Transactional(rollbackFor=Exception.class)

2 让unchecked例外不回滚: @Transactional(notRollbackFor=RunTimeException.class)

3 不需要事务管理的(只查询的)方法:@Transactional(propagation=Propagation.NOT_SUPPORTED)


注意: 如果异常在service层被try{}catch{}了,事务就不回滚了,如果想让事务回滚必须再往外抛try{}catch{throw Exception}。
 

TAG: java , spring , transactional

共有1条评论 发表评论>>

phpthink 发表于:2012-08-02 17:36
有时候事务还是回滚 怎么办?
点击换一张验证码