Spring Cloud Seata - 分布式事务
在Spring Cloud项目中使用Seata进行分布式事务管理,首先需要引入Seata相关依赖,并进行配置。
- 添加Seata依赖到
pom.xml
:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
</dependency>
- 在
application.yml
或application.properties
中配置Seata:
spring:
cloud:
alibaba:
seata:
tx-service-group: my_tx_group
service:
vgroup-mapping:
my_tx_group: default
grouplist:
default: localhost:8091
- 在业务代码中使用
@GlobalTransactional
注解开启全局事务:
import io.seata.spring.annotation.GlobalTransactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.transaction.annotation.Transactional;
@RestController
public class BusinessService {
@Autowired
private BusinessService1 service1;
@Autowired
private BusinessService2 service2;
@GlobalTransactional
@RequestMapping(value = "/doBusiness")
public void doBusiness() {
service1.doBusiness1();
service2.doBusiness2();
}
}
@Service
public class BusinessService1 {
@Transactional
public void doBusiness1() {
// 业务逻辑处理
}
}
@Service
public class BusinessService2 {
@Transactional
public void doBusiness2() {
// 业务逻辑处理
}
}
在上述代码中,@GlobalTransactional
注解被用于标注一个方法为全局事务的开始。在这个方法内调用的其他标有@Transactional
注解的方法将作为同一个全局事务的一部分参与分布式事务管理。如果任何一个业务服务的方法执行失败,整个全局事务都会被回滚。
评论已关闭