Java 我想在一个功能中管理多个事务
我正在寻找一种使用Spring Boot管理多个事务的机制。 代码如下:Java 我想在一个功能中管理多个事务,java,spring,spring-boot,Java,Spring,Spring Boot,我正在寻找一种使用Spring Boot管理多个事务的机制。 代码如下: class Controller { @Autowired Service service; class Service { @ Transactional public void execute () { // 1. select process using Repository // 2. Update process using Repository
class Controller {
@Autowired
Service service;
class Service {
@ Transactional
public void execute () {
// 1. select process using Repository
// 2. Update process using Repository
// 3. select process using Repository
如果在步骤3中发生异常,则需要在步骤2中回滚更新。
到目前为止,我一直在处理一个数据库,所以它的工作与上述问题。
但是,不同的数据库用于选择和更新。(数据源不同)
对于每个数据源,您都可以通过拆分来处理函数,但在这种情况下,对现有逻辑的修改将非常大。
如上所述,有一种方法可以让Spring管理事务,同时使用execute执行所有处理
目前正在调查是否可以通过以下方法实现,但如果有更智能的方法,请告诉我。
1.使用您自己的批注(@Transactional2)打开多个连接
2.拦截器检测到存储库的save*功能已经执行,并切换数据源
谢谢在提供的示例中,您需要回滚的唯一事务是链接到update语句的事务。在这种情况下,将
execute
方法标记为@transactional
就足够了,确保指定事务链接到您正在更新的数据源
:
class Service {
@ Transactional("updating-datasource")
public void execute () {
// 1. select process using Repository
// 2. Update process using Repository
// 3. select process using Repository
由于选择而发生的任何异常都会将此事务标记为“仅回滚”,更新将回滚