AbstractAdvisingBeanPostProcessor 和 APC 的异同

Scroll Down

共同点

  • 都是BeanPostProcessor
  • 都有可能将某个bean包装成一个代理对象,增加一些拦截器功能

不同点

  • APC (AutoProxyCreator)

在整个容器的范围查找所有的匹配当前bean的拦截器,包装成Spring Advisors为当前bean创建代理对象

  • AbstractAdvisingBeanPostProcessor

自身内置一个 Advisor,检查当前bean是否符合应用该 Advisor 的条件,符合的话将自己的 Advisor 包裹到当前bean(必要的时候为当前bean创建代理对象以便包裹自己的Advisor)
检查某个 Advisor 是否可应用到某个 bean 上的方法 : AopUtils#canApply