@Transactional方法在没有@Transactional注释的情况下调用另一个方法?
2022-08-31 09:11:20
我在服务类中看到一个标记为 的方法,但它也调用了同一类中未标记为 .@Transactional
@Transactional
这是否意味着对单独方法的调用导致应用程序打开与 DB 的单独连接或挂起父事务等?
不带任何批注的方法的默认行为是什么,由另一个带有批注的方法调用?@Transactional
我在服务类中看到一个标记为 的方法,但它也调用了同一类中未标记为 .@Transactional
@Transactional
这是否意味着对单独方法的调用导致应用程序打开与 DB 的单独连接或挂起父事务等?
不带任何批注的方法的默认行为是什么,由另一个带有批注的方法调用?@Transactional
当您在没有事务块内调用方法时,父事务将继续使用新方法。它将使用来自父方法(with )的相同连接,并且在被调用的方法(不带)中引起的任何异常都将导致事务回滚,如事务定义中配置的那样。@Transactional
@Transactional
@Transactional
如果你从属于同一Spring的方法调用一个带有注释的方法,那么被调用的方法事务行为不会对事务产生任何影响。但是,如果您从具有事务定义的另一个方法调用具有事务定义的方法,并且它们属于不同的Spring s,则被调用方法中的代码将遵循其自己的事务定义。@Transactional
@Transactional
Bean
Bean
您可以在 Spring 事务文档的声明性事务管理部分找到更多详细信息。
Spring 声明性事务模型使用 AOP 代理,因此 AOP 代理负责事务创建。仅当被调用的方法属于与调用方方法不同的 Spring 时,AOP 代理才会处于活动状态。Bean