Spring AOP源码深度剖析

文章内容输出来源:拉勾教育Java高薪训练营

AOP源码分析类方法调用关系

org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#i nitializeBean
调用
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#a pplyBeanPostProcessorsAfterInitialization
调用
org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator#postProce ssAfterInitialization(后置处理器AbstractAutoProxyCreator完成bean代理对象创建)
调用
org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator#wrapIfNec essary
调用
org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator#createPro xy (在这一步把委托对象的aop增强和通用拦截进行合并,最终给代理对象)
调用
org.springframework.aop.framework.DefaultAopProxyFactory#createAopProxy 
调用
org.springframework.aop.framework.CglibAopProxy#getProxy(java.lang.ClassLoader )

声明式事务分析类方法调用关系

 
@EnableTransactionManagement 注解 
1)通过@import引入了TransactionManagementConfigurationSelector类
它的selectImports方法导入了另外两个类:AutoProxyRegistrar和ProxyTransactionManagementConfiguration 

2)AutoProxyRegistrar类分析方法registerBeanDefinitions中,引入了其他类,通过AopConfigUtils.registerAutoProxyCreatorIfNecessary(registry)引入
InfrastructureAdvisorAutoProxyCreator,它继承了AbstractAutoProxyCreator,是一个后置处理器类

3)ProxyTransactionManagementConfiguration 是一个添加了@Configuration注解的配置类 (注册bean)
注册事务增强器(注入属性解析器、事务拦截器) 
属性解析器:AnnotationTransactionAttributeSource,内部持有了一个解析器集合Set<TransactionAnnotationParser> annotationParsers; 
具体使用的是SpringTransactionAnnotationParser解析器,用来解析
@Transactional的事务属性 
事务拦截器:TransactionInterceptor实现了MethodInterceptor接口,该通用拦截会在产生代理对象之前和aop增强合并,最终一起影响到代理对象 TransactionInterceptor的invoke方法中invokeWithinTransaction会触发原有业
务逻辑调用(增强事务)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值