Spring源码阅读之AOP标签动态代理分析-第2篇

上篇文章我们讲到了 AOP 标签解析,今天来讲讲 AOP 的动态代理具体实现,之前文章介绍过 BeanPostProcessor,该接口提供了两个方法postProcessBeforeInitialization()postProcessAfterInitialization(),其在 bean 实例初始化前后被调用。如果不熟悉的朋友可以先看看之前的文章。

上篇文章我们讲到注册了一个AnnotationAwareAspectJAutoProxyCreator对象,该对象调用postProcessAfterInitialization()方法来创建 AOP 动态代理,具体实现由父类AbstractAutoProxyCreator来实现的,通过父类实现的postProcessAfterInitialization()方法来创建动态代理对象。

  1. 通过 AbstractAutoProxyCreator.postProcessAfterInitialization() 方法创建代理对象,如果需要的话。

  2. 若需要创建动态代理对象,则调用 AbstractAutoProxyCreator.wrapIfNecessary()获取。

  3. 根据 bean 实例对应的 class 属性和 beanName 获取对应的 advices,即获取切面定义信息。

  4. 获取所有候选的 Advices 集合

  5. 从获取到的候选 Advices 集合中挑选合格的 Advices

  6. 根据 bean 实例及获取到的属性创建动态代理对象。

  7. 根据条件选择选择使用 JDK 动态代理还是 CGlib 动态代理创建代理对象并返回。

到此,关于 Spring 系列源码分析暂时告一段落(但是 Spring 远远不止这些知识点),如果读者朋友有想了解的知识点,欢迎积极留言,后续遇到比较有趣的知识点在来补充。

面对当下互联网流量的不断增长,大家也越来越多的讨论高并发大流量场景设计,比如淘宝双 11 实时成交额是怎么做到的;比如用户在浏览网站时,根据其浏览过的页面实时推荐一些可能感兴趣的信息是怎么做到的等等很多场景。接下来通过介绍系列Kafka文章,从其中来寻找一些解决之道,敬请期待。

创作不易,白嫖点个再看,喜欢加个关注

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值