pom依赖

<!-- seata -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>io.seata</groupId>
                    <artifactId>seata-all</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>io.seata</groupId>
            <artifactId>seata-all</artifactId>
            <exclusions>
                <exclusion>
                    <artifactId>druid</artifactId>
                    <groupId>com.alibaba</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- seata END-->

application.yml

seata:
  enabled: true
  application-id: order_seata
  tx-service-group: my_tx_group
  enable-auto-data-source-proxy: true
  service:
    vgroup-mapping:
      my_tx_group: default  # key与上面的tx-service-group的值对应
  registry:
    type: eureka
    eureka:
      application: default
      service-url: http://localhost:7001/eureka
      weight: 1

配置了enable-auto-data-source-proxy:true,项目里就不用配置数据源代理了,否则需要配置数据源代理:

/**
 * 数据源代理
 * @author wangzhongxiang
 */
@Configuration
public class DataSourceConfiguration {

	/**
	 * 普通数据源
	 */
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource druidDataSource(){
        DruidDataSource druidDataSource = new DruidDataSource();
        return druidDataSource;
    }

	/**
	 * 代理数据源,DataSourceProxy 绑定undo_log操作
	 */
    @Primary
    @Bean("dataSource")
    public DataSourceProxy dataSource(DataSource druidDataSource){
        return new DataSourceProxy(druidDataSource);
    }

	/**
	 * MyBatis-->手动指定sqlSessionFactory所使用的的数据源
	 */
    @Bean
    public SqlSessionFactory sqlSessionFactory(DataSourceProxy dataSourceProxy)throws Exception{
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSourceProxy);
        sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
        .getResources("classpath*:/mapper/*.xml"));
        sqlSessionFactoryBean.setTransactionFactory(new SpringManagedTransactionFactory());
        return sqlSessionFactoryBean.getObject();
    }

}

配置了service.vgroup-mapping.my_tx_group: default,@GlobalTransactional注解的name属性就可以省略不填写,否则使用注解时需要指定name值,并且tx-service-group值 与 @GlobalTransactional注解的name属性需要保持一致。还有一种配置事务分组默认值的方式:

spring:
    cloud:
        alibaba:
            seata:
                tx-service-group: my_tx_group

以上配置,涉及分布式事务的微服务(例如A调用B,A和B都算是涉及)都要配置。然后只给需要分布式事务的方法上加上@GlobalTransactional(rollbackFor = Exception.class)即可。