当你调用没有@Transactional
事务块之内的方法时,父事务将继续使用新方法。它将使用与父方法(with @Transactional
)相同的连接,以及在调用的方法中@Transactional
导致的任何异常(不使用该异常将导致事务按照事务定义中的配置回滚。
如果@Transactional
从具有@Transactional
相同实例的方法中调用带有注释的方法,则被调用方法的事务行为将不会对事务产生任何影响。但是,如果从具有事务定义的另一个方法中调用具有事务定义的方法,并且它们处于不同的实例中,则被调用方法中的代码将遵循被调用方法中给出的事务定义。
你可以发现在部分中详细声明式事务管理的spring交易文件。
Spring声明式事务模型使用AOP代理。因此,AOP代理负责创建交易。仅当从实例外部调用实例中包含的方法时,AOP代理才会处于活动状态。