这是我参与11月更文挑战的第16天,活动详情查看:2021最后一次更文挑战
- 在spring-cloud-ozx-account、spring-cloud-ozx-repo、spring-cloud-ozx-order三个服务中添加一个配置类SeataAutoConfig,主要实现如下:
- 配置数据源代理DataSourceProxy
- 初始化GlobalTransactionScanner,装载到Spring IOC容器中。
下面配置类是手动配置完成,GlobalTransactionScanner中的两个参数分别是applicationId(应用名称)和txServiceGroup(事务分组),但是seata-spring-boot-starter主动完成了这些功能,并且Seata自动完成了数据源的代理
1 | java复制代码@Configuration |
注意点:
2.1.1.RELEASE版本的内嵌的seata的版本是0.9.0,所以它无法和seata-spring-boot-starter兼容。
采用自定义配置类SeataAutoConfig,需要在@SpringBootApplication注解内exclude去掉spring-cloud-alibaba-seata内的GlobalTransactionAutoConfiguration,否则两个配置类会产生冲突。
`@SpringBootApplication(exclude=GlobalTransactionAutoConfiguration.class)
spring-cloud-ozx-rest项目配置类如下,它没有关联数据源,所以只需要装载GlobalTransactionScanner,它自动扫描包含GlobalTransactional注解的代码
1 | java复制代码@EnableConfigurationProperties({SeataProperties.class}) |
基于Spring Cloud框架集成Seata框架配置完成,由于Spring Cloud没有提供分布式事务处理规范,它不能像配置中心插拔式集成各种主流的解决方案,而Spring Cloud Alibaba Seata本质是基于Spring Boot 自动装配来整合的。`
本文转载自: 掘金