Spring Aop

1. Spring AOP

Aop是通过代理的方式实现的,默认的方式有JDK动态代理和CGLIB两种方式.

2. 大致流程

1. 预处理判断 -- 是否需要代理
2. 获取增强类,即获取通知(advice)
    2.1 获取所有的增强. 遍历beanFactory容器中所有的bean,找出被@aspectj注解的bean
    2.2 选择合适的增强. 根据pointCut表达是判断是否需要该增强
3. 将增强链和目标对象产生代理类

3. 关键类

1. JDKDynamicAopProxy 实现了InvocationHandler,作为aop的增强逻辑
2. ReflectiveMethodInvocation 封装拦截器链
3. AnnotationAwareAspectJAutoProxyCreator 是一个BeanPostProcessor类,在Bean初始化过程中生效.
生成代理对象
4. DefaultAopProxyFactory 判断是以jdk还是cglib实现动态代理

4. 异常问题处理

1. 内部调用失效,设置expose-proxy为false
2. proxy-target-class 默认的代理方式为jdk动态代理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容