开发者社区 > 云原生 > 中间件 > 正文

springboot 整合seata , 15.1 版本如何手动设置数据源代理?

springboot 整合seata , 15.1 版本如何手动设置数据源代理? 看官网上面说“若外部实现初始化,请参考SeataAutoConfiguration保证依赖加载顺序”,但是按照这个来并没有成功是什么原因呢? 代码如下:

@Slf4j @Slf4j @ConditionalOnProperty( prefix = "seata", name = {"enabled"}, havingValue = "true", matchIfMissing = true ) @AutoConfigureAfter({SeataCoreAutoConfiguration.class}) public class SeataProxyConfig {

@Bean({"failureHandler"})
@ConditionalOnMissingBean({FailureHandler.class})
public FailureHandler failureHandler() {
    return new DefaultFailureHandlerImpl();
}

@Bean
@DependsOn({"springApplicationContextProvider", "failureHandler"})
@ConditionalOnMissingBean({GlobalTransactionScanner.class})
public GlobalTransactionScanner globalTransactionScanner(SeataProperties seataProperties, FailureHandler failureHandler,
                                                         ConfigurableListableBeanFactory beanFactory,
                                                         @Autowired(required = false) List<ScannerChecker> scannerCheckers) {
    log.info("Automatically configure Seata");
    GlobalTransactionScanner.setBeanFactory(beanFactory);
    GlobalTransactionScanner.addScannerCheckers(EnhancedServiceLoader.loadAll(ScannerChecker.class));
    GlobalTransactionScanner.addScannerCheckers(scannerCheckers);
    GlobalTransactionScanner.addScannablePackages(seataProperties.getScanPackages());
    GlobalTransactionScanner.addScannerExcludeBeanNames(seataProperties.getExcludesForScanning());
    GlobalTransactionScanner.setAccessKey(seataProperties.getAccessKey());
    GlobalTransactionScanner.setSecretKey(seataProperties.getSecretKey());
    return new GlobalTransactionScanner(seataProperties.getApplicationId(), seataProperties.getTxServiceGroup(), failureHandler);
}

}

展开
收起
哈喽!小陈 2022-08-08 17:35:59 1504 0
1 条回答
写回答
取消 提交回答
  • 可以关闭 seata 自动代理数据源试一下。 此答案整理自钉钉群“3群-Seata 开源讨论群”

    2022-08-08 18:11:23
    赞同 展开评论 打赏

为企业提供高效、稳定、易扩展的中间件产品。

相关电子书

更多
《Seata 1.3 新特性以及如何参与社区》 立即下载
Apache Dubbo3 源码深入解读 立即下载
Nacos架构&原理 立即下载