分布式事务不仅支持 SOFABoot 框架,也支持纯 Spring 的应用场景。本文将分别介绍针对不同的服务框架所要预先完成的依赖与配置项操作。无论是事务发起方还是参与者均需要完成本文的依赖与配置项操作。
环境要求
必须使用 JDK 1.7 或以上版本。
工程依赖
基于 SOFABoot 框架
添加分布式事务依赖
SOFABoot 框架中已经默认集成了分布式事务 SDK,不需要手动添加分布式事务的 Maven 依赖。
如果您不愿意使用 SOFABoot 提供的分布式事务 SDK,可以在工程的主 pom.xml
文件添加分布式事务的 Maven 依赖,依赖配置如下:
<dependency>
<groupId>com.alipay.sofa</groupId>
<artifactId>dtx-enterprise-sofa-boot-starter</artifactId>
<version>${dtx.version}</version>
</dependency>
您可以在 ${dtx.version}
中选择需要的版本或最新版本,如 2.3.0
版本。关于最新版本,参见 引入 SOFA 中间件。
基于 Spring 框架
在 Spring 框架中,您需要依次添加 Spring 依赖和分布式事务依赖。
添加 Spring 依赖
分布式事务依赖 Spring 4 框架,需要在应用中引入 Spring JAR 包,您可以在应用中添加如下 Spring Maven 依赖:
<!-- spring boot and spring dependencies begin-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
<!-- logback -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>
<!-- test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- spring dependencies end -->
Spring 使用默认版本即可,也可自定义需要的版本,如 2.1.13.RELEASE
。
添加分布式事务依赖
在工程中添加如下依赖:
<dependency>
<groupId>com.alipay.dtx</groupId>
<artifactId>dtx-sofaboot</artifactId>
<version>${dtx.version}</version>
</dependency>
您可以在 ${dtx.version}
中选择需要的版本或最新版本,如 2.3.0
版本。
工程属性配置
为了获取事务管理器的地址,需要配置工程属性文件。
在金融分布式架构 SOFAStack 环境,默认使用 AntVIP 组件寻址。
在非金融分布式架构 SOFAStack 环境,直接使用自定义事务管理器地址。
默认情况下,不同框架的工程属性配置文件存放路径如下:
SOFABoot 框架:存放在
src/main/resources/config/application.properties
。纯 Spring 框架:存放在工程的
META-INF
目录下。
SOFAStack 环境
在 SOFAStack 环境中,需要配置以下属性。具体值可以参考 引入 SOFA 中间件 > properties 配置项 获取。
com.alipay.appname=xxx
:应用名称com.alipay.env=shared
:环境标识com.alipay.instanceid=xxx
:唯一标识com.antcloud.antvip.endpoint=xxx
:配置 AntVIP 地址
非 SOFAStack 环境
在非 SOFAStack 环境中,需要配置以下属性:
com.alipay.appname=xxx
:应用名称com.alipay.dtx.server.hosts=xxx,xxx
:事务管理器域名/IP 列表
配置扫描器
为了实现自动代理涉及分布式事务的类或方法,需要在 Spring 配置文件中添加以下分布式事务扫描器。
<bean class="com.alipay.sofa.dtx.client.aop.ComponentScanner"/>