摩托罗拉|做架构师不做框架师( 二 )


循环遍历获取所有的BeanPostProcessor后置处理器 , 调用所有的初始化后的处理方法


BeanPostProcessor有很多实现的子类 , 分别有不同的功能 , 而其中创建AOP代理对象的子类“AbstractAutoProxyCreator” , 在这里我们继续分析该类的postProcessAfterInitialization方法 。

步骤五:选择代理策略大致业务如下:
  • 判断当前是否需要代理(即Advice类、Pointcut类、Advisor类、AopInfrastructureBean类) , 如果不需要 , 返回当前bean实例
  • getAdvicesAndAdvisorsForBean:获取这个bean的advice集合
  • createProxy:创建代理


步骤六:获取这个bean的advice集合


步骤七:创建AOP代理
大致业务如下:
  • buldAdvisors:确定给定bean的Advisor , 包括特定的拦截器和公共拦截器 , 所有这些都适合Advisor接口 。
  • getProxy:获取指定的代理

步骤八:根据工厂的设置获取代理
proxyFactory有JDK和CGLIB的 , 最终调用的是DefaultAopProxyFactory类的createAopProxy()方法


步骤九:为给定的AOP配置创建一个AopProxy
在这个方法里我们根据不同策略是使用JDK和CGLIB的代理 。

时序图

写在最后
好兄弟可以点赞并关注我 , 全部都是干货 。