Spring事务解析切面源码
2023-08-23 11:29:29 6 举报
Spring事务解析切面源码
作者其他创作
大纲/内容
selectImports
默认PROXY
this.cachedAdvisorBeanNames = advisorNames
registerAutoProxyCreatorIfNecessary
注册过根据定义好的优先级覆盖。索引越大优先级越高
registerOrEscalateApcAsRequired
@EnableTransactionManagement
注册解析AOP的bean后置处理器InfrastructureAdvisorAutoProxyCreator.class
因为事务和AOP注册的bean后置处理器名字都叫 internalAutoProxyCreator所以会先判断是否已经注册过
@Import({TransactionManagementConfigurationSelector.class})
放到缓存
构建缓存
用来解析事务的切点是否命中,底层判断是否存在@Transactionalaop使用的是aspectj的切点表达式
事务代理逻辑
③ 配置advicetransactionInterceptor()
advisorNames=BeanFactoryUtils.beanNamesForTypeIncludingAncestors
解析切面
registerBeanDefinitions
解析Advisor
事务解析切面与AOP流程相同,切点没有使用AspectJ,解析@Transactional
就是获取对应配置类注册的Advisor
AutoProxyRegistrar.class
ProxyTransactionManagementConfiguration.class
① 创建Advisor
AbstractAutoProxyCreator#postProcessBeforeInstantiation
findAdvisorBeans
注册
注册三个bean
registry.containsBeanDefinition
findCandidateAdvisors()
new String[]
② 配置事务属性源transactionAttributeSource()
0 条评论
下一页