gpt4 book ai didi

java - 包含 Spring 的 @Transactional 注解的方法的方法转发?

转载 作者:行者123 更新时间:2023-12-01 19:15:19 26 4
gpt4 key购买 nike

我有一个服务实现,如下所示:

class FooImpl implements Foo {

@Override
@Transactional(...)
public void doSomething(String baz) {
return this.doSomething(Arrays.asList(new String[] { baz }));
}


@Override
@Transactional(...)
public void doSomething(List<String> bazList) {
// do something crazy
return null;
}

}

我想了解一下,这里发生了什么?我正在从另一个带有 @Transactional 注释的方法调用一个带有 @Transactional 注释的方法(方法转发)...

我的问题:
我上面的情况是否造成了任何奇怪的情况?它似乎工作正常,所以我认为正在使用外部事务并且没有创建新事务。它是否正确?另外,关于如何验证/调试这个的任何提示?

最佳答案

这是一个典型的情况。 @Transactional 有一个propagation 属性。此属性定义调用 @Transactional 方法时的行为 - 是否需要新事务、是否需要现有事务等。

默认情况下,传播是REQUIRED,这意味着 - 如果不存在则将启动一个新事务;否则将使用现有的。

Read here about transaction propagation .

这里要提到的另一件事是,(在某些配置场景中)如果您调用同一类的方法,则不会触发事务拦截器,因此根本不考虑传播。因此,在您的情况下,第二种方法中的 @Transactional 很可能被忽略。

关于java - 包含 Spring 的 @Transactional 注解的方法的方法转发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6915012/

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