gpt4 book ai didi

java - @Transactional 方法调用另一个没有@Transactional 注释的方法?

转载 作者:IT老高 更新时间:2023-10-28 13:01:52 25 4
gpt4 key购买 nike

我在 Service 类中看到了一个方法,它被标记为 @Transactional,但它还在同一个类中调用了一些其他方法,这些方法没有被标记为 @Transactional

这是否意味着对单独方法的调用导致应用程序打开到 DB 的单独连接或暂停父事务等?

一个没有任何注解的方法被另一个带有@Transactional注解的方法调用的默认行为是什么?

最佳答案

当您在事务 block 中调用没有 @Transactional 的方法时,父事务将继续执行新方法。它将使用来自父方法的相同连接(使用 @Transactional),并且在被调用方法中引起的任何异常(没有 @Transactional)都会导致事务按照配置回滚在事务定义中。

如果您从具有 @Transactional 属于同一个 Spring Bean 的方法调用具有 @Transactional 注释的方法,那么被调用的方法事务的行为不会对事务产生任何影响。但是如果你从另一个有事务定义的方法调用一个有事务定义的方法,并且它们属于不同的Spring Bean,那么被调用方法中的代码会遵循自己的事务定义。

您可以在spring transaction documentation声明性事务管理部分中找到更多详细信息。 .

Spring 声明式事务模型使用 AOP 代理,因此 AOP 代理负责事务的创建。只有当被调用的方法与调用者属于不同的 Spring Bean 时,AOP 代理才会处于 Activity 状态。

关于java - @Transactional 方法调用另一个没有@Transactional 注释的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6222600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com