参考 :《spring源码深度解析》
针对注解类的aop的实现 说明
public class AnnotationAwareAspectJAutoProxyCreator extends AspectJAwareAdvisorAutoProxyCreator {
AnnotationAwareAspectJAutoProxyCreator 是入口, 里面会实现上层的接口BeanPostProcessor,
在bean初始化之后,去获取所有的AspectJ注解,进一步获取各个bean对应的增强器advisor.举例如下图红框内容
获取对应的增强器的处理逻辑(有多种)
然后进一步 对那些需要增强处理的bean创建对应的代理对象(?)
DefaultAopProxyFactory 负责生成对应的代理对象 ,分为两种
注意:如果被代理bean是单例,生成代理对象也会是单例的,放到缓存里面
生成代理以cglibAopProxy代理为例
继续上面的函数 往下翻 如下图
添加了一些回调函数处理逻辑
下图把之前获取的增强器处理逻辑放到拦截器里面,回调时候出发,也就是在
被代理的方法调用时候触发增强逻辑,实现了代理功能
针对的具体的方法methond 把要处理的增强逻辑 放入chain