gpt4 book ai didi

java - 两次调用 Required 传播的事务函数只会产生 1 个事务(但从另一个类调用时会产生 2 个事务)

转载 作者:行者123 更新时间:2023-11-30 09:59:49 25 4
gpt4 key购买 nike

我有一个服务类,其方法 doSomething() 用 @transactional 注释并且传播类型为“required”。另一个非事务类调用 doSomething() 两次。

我假设将为每个调用创建 2 个事务,但事实证明两个调用只使用相同的事务。为了进一步混淆我,我使用另一个 @RestController 非事务类调用了两次 doSomething() 。但这次结果是每次调用都使用不同的事务。

我有 2 个问题。

什么是预期行为(1 或 2 个事务)

这里为什么不一样?

NormalClass{
@Autowired
Service service;

service.doSomething();
// same transaction used
service.doSomething();
}

RestController{
@Autowired
Service service;

service.doSomething();
// new transaction used
service.doSomething();
}

Service{
@Transactional
doSomething(){};
}

最佳答案

谢谢@JB Nizet,你是​​对的,NormalClass 扩展了一个抽象类,它已经获得了交易。我没想到抽象类会这样做。

关于java - 两次调用 Required 传播的事务函数只会产生 1 个事务(但从另一个类调用时会产生 2 个事务),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58577191/

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