gpt4 book ai didi

java - 具有 Restful 应用程序的 Spring 事务

转载 作者:行者123 更新时间:2023-11-30 08:36:50 26 4
gpt4 key购买 nike

我正在研究 spring boot,我需要澄清一些关于 transaction 管理的事情。

例如,我确实有 2 个类运行两个单独的作业(第一个作业是在数据库上创建配置文件,第二个作业是在不同的系统上调用 restful 应用程序也创建配置文件)。

这 2 个工作必须是事务性的。两者都需要成功。如果其中一项作业失败,它不应在任何数据存储上创建任何配置文件)

因为我是这个 Spring 的新手。我希望得到建议,并且需要知道这种情况下的最佳做法是什么。

最佳答案

有一个facade pattern .我建议制作一个门面服务来加入两个服务的逻辑。服务必须是独立的,因为使用配置文件和与其他系统通信是业务逻辑的不同部分。

例如,ProfileServiceOuterService 用于处理配置文件和外部通信。您可以编写 SomeFacadeService 来连接两个方法并将其包装在一个事务中。 @Transactional 的默认传播是REQUIRED。因此事务将在方法 SomeFacadeService.doComplexJob 上创建,方法 profileService.createProfileouterService.doOuterJob 将加入当前事务。如果其中之一出现异常,整个 SomeFacadeService.doComplexJob 将被回滚。

@Controller
public class SomeController {
@Autowired
SomeFacadeService someFacadeService ;

@RequestMapping("/someMapping")
public void doSomeJob() {
someFacadeService.doComplexJob();
}
}

@Service
public class SomeFacadeService {
@Autowired
ProfileService profileService;
@Autowired
OuterService outerService;

@Transactional
public void doComplexJob() {
profileService.createProfile();
outerService.doOuterJob();
}
}

@Service
public class ProfileService {
@Transactional
public void createProfile() {
// create profile logic
}
}

关于java - 具有 Restful 应用程序的 Spring 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37559240/

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