graph TB
  A[源码入口spring.factories] --> SeataAutoConfiguration --> GT{GlobalTransactionScanner}

  GT --> D["实现InitializingBean接口实现afterPropertiesSet()"] --> F{"initClient()"}

  F --> IT(init TM)
  F --> IR(init RM)

  GT --> H["继承AbstractAutoProxyCreator重写wrapIfNecessary()"] --> I["GlobalTransactionalInterceptor.invoke()"]

  U((用户)) --> I --> IH["GlobalTransactionalInterceptor.handleGlobalTransaction(methodInvocation, transactional)构建事务信息"]
  IH --> TE["transactionalTemplate.execute()"] --> BT["beginTransaction(txInfo, tx)开启事务"]
  BT --> BE["business.execute()执行业务"] --> CT["commitTransaction(tx)提交事务"]
  BE --> CR["rollbackTransaction(tx, originalException)回滚事务"]

  A --> SeataDataSourceAutoConfiguration --> SeataAutoDataSourceProxyCreator