spring集成seata启动报错问题解决

在项目启动时遇到FactoryMethod 'globalTransactionScanner'异常,由于依赖不正确导致。通过调整Spring、Spring Cloud Alibaba Seata及其相关依赖的版本,问题得到解决。将seata-all和seata-spring-boot-starter替换为1.4.2版本,启动成功。

启动项目发现这个错误,也是困扰了很长时间,就是依赖不对
Factory method 'globalTransactionScanner' threw exception; nested exception is io.seata.common.exception.NotSupportYetException: not support register type: null

我的依赖 spring依赖版本

			
			<dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.1.10.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Greenwich.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.1.0.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

seata依赖替换成这个启动成功

		
		<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>io.seata</groupId>
                    <artifactId>seata-spring-boot-starter</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-seata</artifactId>
            <version>2.1.0.RELEASE</version>
            <exclusions>
                <exclusion>
                    <groupId>io.seata</groupId>
                    <artifactId>seata-all</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>io.seata</groupId>
            <artifactId>seata-all</artifactId>
            <version>1.4.2</version>
        </dependency>
        <dependency>
            <groupId>io.seata</groupId>
            <artifactId>seata-spring-boot-starter</artifactId>
            <version>1.4.2</version>
        </dependency>
### 黑马头条使用Seata分布式事务解决方案的最佳实践 #### 本地消息表方案的应用 在黑马头条项目中,采用本地消息表方案来处理分布式事务可以有效提高系统的稳定性和数据的一致性。此方法通过引入一张额外的消息表记录交易过程中的重要事件,在源业务系统中模拟消息队列的行为[^1]。 #### Seata客户端配置优化 对于Seata客户端而言,其获取TC(Transaction Coordinator)集群名称的方式依赖于`tx-group-service`的值作为键名至`vgroupMapping`映射关系里查询对应的集群信息。这一步骤确保了不同微服务间能够正确识别并连接到指定的协调者实例进行全局事务管理[^2]。 #### 正常流程与异常恢复机制设计 当执行分布式事务时,按照顺序调用各个参与者的服务接口实施正向逻辑;一旦遇到任一环节报错,则立即触发回滚程序撤销之前已完成的操作,从而保障整个业务链条处于一致的状态。具体来说: - **正常情况**:所有节点顺利完成各自的任务后统一提交更改; - **错误场景**:任意一处出现问题即刻启动补偿措施撤消影响范围内的变更动作[^3]。 #### AT模式的优势体现 考虑到性能因素以及开发便捷度方面的需求,推荐选用Seata提供的AT(Automatic Transaction)模式来进行跨库操作。该模式下无需修改原有SQL语句即可实现高效能的数据同步,并借助全局唯一锁防止并发冲突的同时保持良好的隔离级别[^4]。 #### Spring Cloud Nacos集成设置 最后值得注意的是,在实际部署环境中应当合理调整Spring Cloud应用下的Nacos注册发现及配置文件加载策略。例如设定恰当的服务命名空间和服务端地址参数等,以便更好地支持基于Seata框架构建起来的大规模分布式架构体系运行需求[^5]。 ```yaml spring: application: name: wemedia-gateway # 服务名称 profiles: active: dev # 开发环境配置 ip: 192.168.200.130 # 环境ip地址 cloud: nacos: discovery: # 注册中心地址配置 server-addr: ${spring.profiles.ip}:8848 namespace: ${spring.profiles.active} config: # 配置中心地址配置 server-addr: ${spring.profiles.ip}:8848 namespace: ${spring.profiles.active} file-extension: yml # data-id 后缀 name: ${spring.application.name} # data-id名称 ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值