猿问

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

如果在类上使用@Transactional,则整个类的所有方法都会启用事务。那如果我希望类中的某些方法不启用事务,那要怎么做?


PS.方法级别的@Transactional太麻烦了,不是好的解决方法。另外配置切面的方式我也不喜欢,限定了要启用事务的命名。

昵称重名
浏览 1616回答 1
1回答

o学者o

@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没有声明事务,那就不用事务.
随时随地看视频慕课网APP

相关分类

Java
我要回答