spring 事务Propagation.REQUIRES_NEW 不起作用的原因
1、同一个业务类里面,调用内部被声明为 Propagation.REQUIRES_NEW的方法,也不会开启新事务,必须调用另一个类里面被声明为 Propagation.REQUIRES_NEW的方法方法才行。
2、或者在类内部autoweired自己(没试过):
class A { @Autowired private A a public void m1() { a.m2(); } @Transactional(propagation = Propagation.REQUIRES_NEW) public void m2() {} }
3、调用的是AOP代理对象而不是目标对象,首先执行事务切面,事务切面内部通过TransactionInterceptor环绕增强进行事务的增强,即进入目标方法之前开启事务,退出目标方法时提交/回滚事务。
目标对象内部的自我调用将无法实施切面中的增强。

浙公网安备 33010602011771号