为了账号安全,请及时绑定邮箱和手机立即绑定

关于spring基于注解的事务管理

关于spring基于注解的事务管理

昵称重名 2015-09-29 14:55:00
如果在类上使用@Transactional,则整个类的所有方法都会启用事务。那如果我希望类中的某些方法不启用事务,那要怎么做?PS.方法级别的@Transactional太麻烦了,不是好的解决方法。另外配置切面的方式我也不喜欢,限定了要启用事务的命名。
查看完整描述

1 回答

已采纳
?
o学者o

TA贡献7条经验 获得超5个赞

@Transactionalpublic class TestServiceBean implements TestService {   
    private TestDao dao;   
    public void setDao(TestDao dao) {        this.dao = dao;
    }   
    @Transactional(propagation = Propagation.NOT_SUPPORTED)    public List<Object> getAll() {        return null;
    }   
}

@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没有声明事务,那就不用事务.

查看完整回答
1 反对 回复 2015-09-29
  • 1 回答
  • 1 关注
  • 1604 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信