时,事务传播依然是生效的,得到的还是方法A的connection,autoCommit还是为false,所以事务生效;反之,如果方法A没有注解@Transactional 时,是不受事务管理的,autoCommit...=true,那么传播给方法B的也为true,执行完自动提交,即使B标注了@Transactional ;
在一个Service内部,事务方法之间的嵌套调用,普通方法和事务方法之间的嵌套调用,都不会开启新的事务....是因为spring采用动态代理机制来实现事务控制,而动态代理最终都是要调用原始对象的,而原始对象在去调用方法时,是不会再触发代理了!...所以以上就是为什么在没有标注事务注解的方法A里去调用标注有事务注解的方法B而没有事务滚回的原因;
问题二:在事务方法A中调用另外一个事务方法B,被调用方法B的事务没起作用
产生问题的原因是:spring...).setSelfProxy(bean);
}
return bean;
}
}
参考:
@Transactional 同一个类中无事务方法a()内部调用有事务方法