理解Spring AOP 原理(三)Spring AOP 源码分析

理解了JDK,CGLIB动态代理技术,以及ProxyFactory后,不难理解Spring实现AOP就是扫描AOP配置后生成相应的代理类,按切点(pointcut)和通知器(advisor)配置来织入通知(advice)来实现AOP。核心是动态代理技术。

具体看看,先看看@EnableAspectJAutoProxy:
这里写图片描述

进入AspectJAutoProxyRegistrar:
这里写图片描述

读注释,可以看出这个类用于注册一个AnnotationAwareAspectJAutoProxyCreator到Spring容器中,进入AnnotationAwareAspectJAutoProxyCreator的基类AbstractAutoProxyCreator的postProcessAfterInitialization方法中,可见AnnotationAwareAspectJAutoProxyCreator是一个BeanPostProcessor,通过对Bean进行后处理实现用代理替换本身的Bean:
这里写图片描述

追踪wrapIfNecessary(bean, beanName, cacheKey)方法,最终可以到createProxy方法中:
这里写图片描述

了解ProxyFactory的原理后,这段代码不难理解,就是根据注释解析出Advisor,然后生成对应代理类。

阅读更多
文章标签: spring
个人分类: Spring
上一篇理解Spring AOP 原理(二)JDK,CGLIB动态代理以及ProxyFactory
下一篇学习笔记--mysql索引(四) 多列索引
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭