基于注解的SpringAOP源码解析(三)
注意,读完本篇文章需要很长很长时间 在之前的2篇文章: AOP源码分析(一) AOP源码分析(二) 中,我们搭建了SpringAOP源码分析的环境,介绍了 @EnableAspectJAutoProxy 注解和 postProcessBeforeInstantiation 方法是如何加载所有增强的。本篇文章则将描述一下AOP中剩余的实现逻辑 postProcessAfterInitialization 这个方法是在bean实例化之后调用的,它是适用于所有需要被代理的类的 public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { if (bean != null) { Object cacheKey = getCacheKey(bean.getClass(), beanName); if (!this.earlyProxyReferences.contains(cacheKey)) { //往下看 return wrapIfNecessary(bean, beanName, cacheKey); } } return bean; } protected Object wrapIfNecessary(Object bean, String