spring何时为代理创建代理对象

spring何时为代理创建代理对象

所以大胆猜测,在应用创建目标类时,其实是将目标类进行了处理,将代理类放入了ioc。

下面开始进行验证

1,可以看到,其实ioc注入的的确是代理对象

2, 那我们就往前翻,看看这个代理对象什么时候被创建

3,我们翻到getSingleton 方法,发现singletonFactory.getObject(); 返回了代理对象

4,那就简单了,我们进入singletonFactory.getObject(); 方法

5,我们会发现 doCreateBean 方法会创建正真的代理对象,我们点进去

6,会进到doCreateBean 方法,这个方法调用initializeBean 方法,会得到代理类,我们点进去这个方法

7,initializeBean会对目标类进行相应的包装

8,会发现,实际对目标类进行包装的是AnnotationAwareAspectJAutoProxyCreator 这个后置处理器,我们点进去看看它如何包装目标类

9,最终的代理类选择逻辑如下