zdd123456的gravatar头像
zdd123456 2016-09-27 11:03:28

spring事务传播问题

spring里通过@Transactional(propagation = Propagation.NESTED,rollbackFor = ServiceException.class) 可以回滚当前事物,但是发现不同的service开启的事物不同,那么Propagation应该用哪个枚举?

所有回答列表(1)
黄飞鸿的gravatar头像
黄飞鸿  LV19 2016年9月28日

Propagation.REQUIRED

 

 

@Transactional(propagation=Propagation.REQUIRED) 
如果有事务, 那么加入事务, 没有的话新建一个(默认情况下)
@Transactional(propagation=Propagation.NOT_SUPPORTED) 
容器不为这个方法开启事务
@Transactional(propagation=Propagation.REQUIRES_NEW) 
不管是否存在事务,都创建一个新的事务,原来的挂起,新的执行完毕,继续执行老的事务
@Transactional(propagation=Propagation.MANDATORY) 
必须在一个已有的事务中执行,否则抛出异常
@Transactional(propagation=Propagation.NEVER) 
必须在一个没有的事务中执行,否则抛出异常(与Propagation.MANDATORY相反)
@Transactional(propagation=Propagation.SUPPORTS) 
如果其他bean调用这个方法,在其他bean中声明事务,那就用事务.如果其他bean没有声明事务,那就不用事务.

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友