nacos+Seata+Mybatis plus 教程

 

1、环境配置

下载:https://github.com/seata/seata

 2、配置:配置的是 conf下的file.conf与registry.conf

file.conf

由文件的形式改为数据库的形式工作,所以下面配置的是数据库信息与最上面的组信息,需要记住这个组名(可自起 *_tx_group)

 registry.conf

配置了注册中心,3333是nacos的一个节点

 配置数据库

"seata" 数据库sql来源:conf > db.store.sql 、版本源码查看(这里是v1.00) +业务数据库

undo_log 公共表,sql :查看(v1.00) (小于1.00 ,conf > db_undo_log.sql)

3、启动Seata ,直接文件启动   root@innor:/usr/local/seata/seata-1.0.0/bin# ./seata-server.sh

4、在项目中配置

依赖:

        <!--seata-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
            <!-- 因为兼容版本问题,所以需要剔除它自带的seata的包 -->
            <exclusions>
                <exclusion>
                    <artifactId>seata-all</artifactId>
                    <groupId>io.seata</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>io.seata</groupId>
            <artifactId>seata-all</artifactId>
            <version>1.0.0</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
        </dependency>
        <!--mybatis-plus-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
        </dependency>

yml

组名与bruid数据源的配置

 主启动类:

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)//取消数据源的自带创建
...

配置:

//用于Seata的数据源配置
@Configuration
public class DataSourceConfig {


    /**
     * 从配置文件获取属性构造datasource,注意前缀,这里用的是druid,根据自己情况配置,
     * 原生datasource前缀取"spring.datasource"
     *
     * @return
     */
    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DruidDataSource druidDataSource(){
        return new DruidDataSource();
    }
    /**
     * 构造datasource代理对象,替换原来的datasource
     *
     * @param druidDataSource
     * @return
     */
    @Primary
    @Bean("dataSource")
    public DataSourceProxy dataSourceProxy(DataSource druidDataSource) {
        return new DataSourceProxy(druidDataSource);
    }
}

将file.conf与registry.conf复制到项目的resource下

业务:

在事务操作的服务加上注解,注意OpenFeign不要写实现方法,因为调用出问题,且没有后备方法就会报错,报错就会使数据回滚。

@GlobalTransactional(name = "fsp-test" , rollbackFor = Exception.class)

原文地址:https://www.cnblogs.com/zjazn/p/14959379.html