Spring源码深度解析读书日记七

AOP

AOP常见的两种代理方式JDK和CGLiB

  1. JDK动态代理主要针对的对象必须是某个接口的实现,他是通过在运行期间创建一个接口的实现类来完成对目标的代理
  2. CGLIB代理,实现原理类似于JDK动态代理,只是它在运行期间生成的代理对象是针对目标类扩展的子类。CHLIB是高效的代码生成包,底层是依靠ASM(开源的JAVA字节码编辑类库)操作字节码实现的,性能比JDK更强。
  3. expose-proxy:有时候目标对象内部的自我调用将无法实施切面中的增强。

创建AOP代理

主要有两个步骤

  1. 获取增强方法或者增强器
  2. 更具获取的增强器进行代理
    在这里插入图片描述

获取增强器

  1. 获取所有的BeanName,后去的是所有在beanFactory中注册的bean
  2. 便利所有的BeanName,找出声明饿了AspectJ注解的类
  3. 对标记为AspectJ注解的类进行增强器提取
  4. 将提取结果加入缓存。

寻找匹配的增强器

创建代理

对于代理类的创建和处理,Spring 是通过ProxyFactory来处理的,而函数中主要是对ProxyFactory的初始化操作,主要过程是
1. 获取当前类的属性
2. 添加代理接口
3. 封装Advisor并加入到ProxyFactory中
4. 设置要代理的类
5. 通过定制的函数customizeProxyFactory,对ProxyFactory进行进一步封装
6. 进行获取代理操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值