springboot中seata的原理
时间: 2023-10-30 18:04:14 浏览: 53
在Spring Boot中使用Seata的原理是通过引入相应的依赖和配置来实现的。在引用中,我们可以看到使用了spring-cloud-alibaba-seata的依赖,它是用来解决全局事务XID传递问题的。这个依赖会自动进行XID的传递,不需要手动绑定。
同时,在引用中,我们也可以看到另一种引入Seata的方式。通过引入seata-spring-boot-starter的依赖,我们可以手动绑定全局事务XID。这种方式需要通过过滤器或拦截器进行手动绑定,以确保下游服务能够获取到全局XID并进行回滚。
综上所述,Spring Boot中使用Seata的原理是通过引入相应的依赖,并根据需要选择自动传递XID或手动绑定XID的方式来实现全局事务的管理和控制。
相关问题
springboot整合seata
引用<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [Springboot整合Seata](https://blog.csdn.net/qq_29385297/article/details/127583166)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [springboot整合seata](https://blog.csdn.net/weixin_38017227/article/details/120719499)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [seata分布式事务讲解,SpringBoot项目整合seata全流程和常见错误解决](https://blog.csdn.net/qq_41625866/article/details/125925588)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]
springboot集成seata
在Spring Boot中集成Seata,需要进行以下步骤:
1.添加Seata的依赖。在pom.xml文件中添加以下依赖:
```xml
<dependency>
<groupId>io.seata</groupId>
<artifactId>seata-spring-boot-starter</artifactId>
<version>${seata.version}</version>
</dependency>
```
2.配置Seata。在application.properties或application.yml文件中添加以下配置:
```yaml
spring:
application:
name: ${spring.application.name}
cloud:
alibaba:
seata:
tx-service-group: ${spring.application.name}-fescar-service-group
seata:
enabled: true
application-id: ${spring.application.name}
tx-service-group: ${spring.application.name}-fescar-service-group
config:
type: nacos
nacos:
serverAddr: ${nacos.server-addr:localhost:8848}
namespace: ${nacos.namespace:public}
registry:
type: nacos
nacos:
serverAddr: ${nacos.server-addr:localhost:8848}
namespace: ${nacos.namespace:public}
service:
vgroupMapping:
${spring.application.name}-fescar-service-group: default
groupMapping:
${spring.application.name}-fescar-service-group: "default"
transport:
type: TCP
tcp:
selector: ${seata.selector:org.apache.seata.core.rpc.netty.NettyClientConfig}
clientWorkerThreads: ${seata.client.worker.thread.size:NettyRuntime.availableProcessors()}
bossThreadSize: ${seata.boss.thread.size:1}
shutdownWait: ${seata.shutdown.wait:3}
maxConnection: ${seata.max.commit.retry.timeout:1}
connectionWaitTimeout: ${seata.max.commit.retry.timeout:5000}
idleTimeout: ${seata.max.commit.retry.timeout:300000}
heartbeatTimeout: ${seata.heartbeat.timeout:1000}
```
3.配置数据源。在application.properties或application.yml文件中添加以下配置:
```yaml
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/seata?useUnicode=true&characterEncoding=utf-8&useSSL=false
username: root
password: root
```
4.配置MyBatis。在MyBatis的配置文件中添加以下配置:
```xml
<configuration>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<typeAliases>
<package name="com.xxx.xxx.entity"/>
</typeAliases>
<plugins>
<plugin interceptor="io.seata.rm.datasource.mybatis.SeataInterceptor"/>
</plugins>
</configuration>
```
5.启动Seata Server。在Seata Server的bin目录下执行以下命令:
```shell
sh seata-server.sh -p 8091 -m file
```
6.启动应用程序。在Spring Boot应用程序的启动类上添加@SeataApplication注解。
```java
@SpringBootApplication
@SeataApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
```