做评测好的视频网站,达州网站建设,采购网有哪些平台,上线了建站教程原理 TM两阶段#xff1a;
阶段1#xff1a;TM向TC申请全局事务#xff0c;netty客户端发起了一次记录xid的请求
阶段2#xff1a;TC协调之后#xff0c;决定执行RM是否提交或者回滚。
spring公共组件部分
1、SeataAutoConfiguration类加载
利用springboot自动装配机…原理 TM两阶段
阶段1TM向TC申请全局事务netty客户端发起了一次记录xid的请求
阶段2TC协调之后决定执行RM是否提交或者回滚。
spring公共组件部分
1、SeataAutoConfiguration类加载
利用springboot自动装配机制从spring.factories文件加载自动配置类SeataAutoConfiguration
org.springframework.boot.autoconfigure.EnableAutoConfigurationio.seata.spring.boot.autoconfigure.SeataAutoConfigurationConditionalOnProperty(prefix SEATA_PREFIX, name enabled, havingValue true, matchIfMissing true)
AutoConfigureAfter({SeataCoreAutoConfiguration.class})
public class SeataAutoConfiguration {private static final Logger LOGGER LoggerFactory.getLogger(SeataAutoConfiguration.class);Bean(BEAN_NAME_FAILURE_HANDLER)ConditionalOnMissingBean(FailureHandler.class)public FailureHandler failureHandler() {return new DefaultFailureHandlerImpl();}BeanDependsOn({BEAN_NAME_SPRING_APPLICATION_CONTEXT_PROVIDER, BEAN_NAME_FAILURE_HANDLER})ConditionalOnMissingBean(GlobalTransactionScanner.class)public GlobalTransactionScanner globalTransactionScanner(SeataProperties seataProperties, FailureHandler failureHandler,ConfigurableListableBeanFactory beanFactory,Autowired(required false) ListScannerChecker scannerCheckers) {if (LOGGER.isInfoEnabled()) {LOGGER.info(Automatically configure Seata);}// set bean factoryGlobalTransactionScanner.setBeanFactory(beanFactory);// add checkers// /META-INF/services/io.seata.spring.annotation.ScannerCheckerGlobalTransactionScanner.addScannerCheckers(EnhancedServiceLoader.loadAll(ScannerChecker.class));// spring beansGlobalTransactionScanner.addScannerCheckers(scannerCheckers);// add scannable packagesGlobalTransactionScanner.addScannablePackages(seataProperties.getScanPackages());// add excludeBeanNamesGlobalTransactionScanner.addScannerExcludeBeanNames(seataProperties.getExcludesForScanning());// create global transaction scannerreturn new GlobalTransactionScanner(seataProperties.getApplicationId(), seataProperties.getTxServiceGroup(), failureHandler);}
}