gpt4 book ai didi

java - 网络故障后回滚Spring事务

转载 作者:行者123 更新时间:2023-12-02 11:09:58 25 4
gpt4 key购买 nike

我正在开发基于 SpringBoot 的相当简单的 RESTful 服务。我正在使用 Ebean 和 SpringData。我所有的 REST 方法都用 @Transactional 注释:

@Transactional
@PostMapping
public Entity createEntity(...) {
// some code
}

我面临的问题是,如果存在网络问题,但此方法执行时没有异常,事务仍然会被提交。例如,客户端可能发送数据,我的代码创建记录,但服务器无法将响应发送回客户端。在这种情况下,我希望事务回滚,但我没有找到这样做的方法。

在这种情况下是否可以回滚事务?也许我忽略了 Spring 平台的限制。

谢谢

编辑:回答下面的回复并进一步指定问题:回滚事务很容易。棘手的部分是运行任何代码来响应网络故障。我希望我可以配置 Spring 来为我做这件事。就像“等到发送最后一个字节,然后回滚或提交事务”。我当前的代码将在 createEntity() 方法完成后立即提交事务。

最佳答案

这不是Spring框架的限制。一旦该方法成功执行,Spring 框架的 @Transactional 不负责将其回滚。

你能做的最好的事情就是拥有一个 ExceptionHandler。请参阅此答案以获得更好的视角:https://stackoverflow.com/a/45034574/945214

您可以做的另一件事是提高整个 HTTP 请求拓扑的性能,以便减少此类潜在故障的可能性(随着触摸时间的减少)。请参阅我关于应用程序性能的文章:https://www.linkedin.com/pulse/improving-website-performance-kshitiz-garg/

关于java - 网络故障后回滚Spring事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50677874/

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