首先是会自动创建事务的Advisor
1、创建事务Advisor是如何开始的?
在Spring boot的TransactionAutoConfiguration中有开启@EnableTransactionManagement。
@EnableTransactionManagement注解主要是通过TransactionManagementConfigurationSelector来导入其他Bean
- ProxyTransactionManagementConfiguration来添加BeanFactoryTransactionAttributeSourceAdvisor,AnnotationTransactionAttributeSource,TransactionInterceptor
- AutoProxyRegistrar来添加InfrastructureAdvisorAutoProxyCreator(用于自动创建Aop)
因为@EnableTransactionManagement注解proxyTargetClass的默认值是false,mode的默认值是AdviceMode.PROXY,AutoProxyRegistrar中会根据这两个参数来创建InfrastructureAdvisorAutoProxyCreator,并且设置对应的属性。
其中对于处理注解@Configuration可以参考https://blog.csdn.net/xiexingshishu/article/details/115473531
自动创建 Aop的可以参考https://blog.csdn.net/xiexingshishu/article/details/111241143
2、是否创建代理
通过BeanFactoryTransactionAttributeSourceAdvisor中的pointcut来判断类中的方法是否有@Transactional,其处理时序为