0
点赞
收藏
分享

微信扫一扫

Spring声明事务原理及核心源码分析

上一篇 <<<Spring事务常识汇总
下一篇 >>>手动事务和自定义注解事务代码参考


Spring声明事务底层实现原理

核心代码执行流程

1、注解@EnableTransactionManagement开启事务支持
2、@Import({TransactionManagementConfigurationSelector.class})
3、TransactionManagementConfigurationSelector祖宗ImportSelector,自动注入AutoProxyRegistrar.class和ProxyTransactionManagementConfiguration.class
4、AutoProxyRegistrar.class实际注入InfrastructureAdvisorAutoProxyCreator.class,它的祖宗是BeanPostProcessor.class。
beanId:org.springframework.aop.config.internalAutoProxyCreator
class:AspectJAwareAdvisorAutoProxyCreator.class
5、ProxyTransactionManagementConfiguration.class实际注入拦截器transactionInterceptor.class,祖宗是MethodInterceptor.class
beanId:transactionInterceptor
class:TransactionInterceptor.class
6、程序启动后调用BeanPostProcessor的后置处理器,找到AbstractAutoProxyCreator的postProcessAfterInitialization方法,将注有@Transactional注解的增强器加入到代理类中,和AOP初始化一致
Object[] specificInterceptors = this.getAdvicesAndAdvisorsForBean(bean.getClass(), beanName, (TargetSource)null);
7、方法执行的时候,会调用代理类的invoke方法或intercept方法,真正通过AOP的责任链和递归方式执行拦截。

InfrastructureAdvisorAutoProxyCreator作用有那些

TransactionInterceptor 的作用


推荐阅读:
<<<Spring IOC的初始化原理
<<<SpringBean的生命周期流程图
<<<SpringBean单例情况下解决循环依赖的原理
<<<Spring AOP的底层原理
<<<Spring AOP通知责任链模式图解
<<<Spring AOP核心源码解读
<<<Spring事务常识汇总
<<<手动事务和自定义注解事务代码参考
<<<Spring常用注解汇总

举报

相关推荐

0 条评论