gpt4 book ai didi

spring - 使用 Spring 2.5 从外部事务控制内部事务设置

转载 作者:行者123 更新时间:2023-12-01 05:43:28 27 4
gpt4 key购买 nike

我正在使用 Spring 2.5 事务管理,我有以下设置:

Bean1

@Transactional(noRollbackFor = { Exception.class })
public void execute() {
try {
bean2.execute();
} catch (Exception e) {
// persist failure in database (so the transaction shouldn't fail)
// the exception is not re-thrown
}
}

Bean2
@Transactional
public void execute() {
// do something which throws a RuntimeException
}

失败永远不会从 Bean1 持久化到 DB 中,因为整个事务都回滚了。

我不想在 Bean2 中添加 noRollbackFor 因为它被用在很多没有逻辑来正确处理运行时异常的地方。

有没有办法避免我的事务仅在从 Bean1 调用 Bean2.execute() 时回滚?

否则,我想我最好的选择是在新事务中坚持我的失败?我还能做些什么清洁工作?

最佳答案

这是注释的警告之一……您的类不可重用!

如果您在 XML 中配置您的事务,如果可能的话。

假设您使用 XML 配置:如果它不消耗昂贵的资源,您可以创建 bean2 的另一个实例以使用您指定的代码。也就是说,您可以按照上面指定的方式配置一个,一个没有异常回滚。

关于spring - 使用 Spring 2.5 从外部事务控制内部事务设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3843205/

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