【发布时间】:2021-03-18 10:27:00
【问题描述】:
我在使用 Spring @Transactional 时遇到了一些问题,希望在这里找到解决方案。我在服务中有一个标记为@Transactional 的方法,它通过调用一个方法来通过HTTP 协议请求数据(我现在使用的是Apache HttpClient),解析响应并将结果写入数据库。由于这一切都在一种方法中起作用,我担心这可能会导致交易取消,因为我的项目有交易时间限制,并且来自外部 API 的请求可能真的很长。
在这里,我想知道在这种情况下如何最正确地分离 HTTP 请求+响应解析和数据库操作。作为一种选择,可以有两种方法,一种用于事务,另一种用于其余逻辑,但我已经假设此类任务存在普遍接受的设计模式。
【问题讨论】:
-
唯一的选择是在事务边界之外进行HTTP请求,或者使用
TransactionTemplate而不是注解来尽可能限制事务的跨度
标签: java spring jpa spring-data-jpa spring-transactions