gpt4 book ai didi

java - Spring @Transactional - 我可以覆盖 rollbackFor

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:39:16 24 4
gpt4 key购买 nike

我正在调用具有以下注释的服务:

@Transactional(rollbackFor=ExceptionA.class)
public void myMethodA(....) throws ExceptionA {
.
.
}

我正在从另一个 Spring Bean 中的其他方法调用此方法。

@Transactional(rollbackFor=ExceptionB.class)
public void mainEntryPointMethod(....) throws ExceptionB {
.
try {
myMethodA()
}
catch (ExceptionA exp) {
.
}


.
}

我的问题是,如果 myMethodA 抛出异常,我的事务(默认传播从 mainEntryPointMethod -> myMethodA 传递)将被标记为回滚。有没有一种方法可以覆盖内部方法的“rollbackFor”?

提前致谢克里斯

最佳答案

解决方案#1您可以指定您正在调用的方法获得它自己的事务。您可以通过注释该方法来做到这一点。

 @Transactional(propagation = Propagation.REQUIRES_NEW)

这样,如果方法 (myMethodA) 被标记为回滚,则只会回滚该事务,而不是调用者事务。

只有当您被允许让被调用方法管理它自己的事务并且不想回滚调用者事务时才有效。

解决方案#2也许您可以尝试子类化并更改事务注释属性。

关于java - Spring @Transactional - 我可以覆盖 rollbackFor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4717142/

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