春天框架里注解@ autowired的工作原理

  

假设我有一个名为HelloWorld bean,有一个成员属性指向另一个bean用户。

              春天框架里注解@ autowired的工作原理   

注释@ autowired,只要调用getBean在运行时,将自动返回的HelloWorld实例用户属性注入用户实例。

              春天框架里注解@ autowired的工作原理   

这种行为由Spring框架实现如何?

  

(1)在Spring容器实现的刷新方法中,所有的单例bean将默认初始化。

              春天框架里注解@ autowired的工作原理   HelloWorld bean初始化时

:

              春天框架里注解@ autowired的工作原理   

,因为它有以下源代码:

        <>以前@Autowiredprivate  User 用户;   

在运行时,这个注释可以在元数据通过反射。在元数据结构下,targetClass指向HelloWorld bean, injectedElements指向用户类被注入。

              春天框架里注解@ autowired的工作原理                  春天框架里注解@ autowired的工作原理   在doResolveDependency

(2),用户bean的定义是基于搜索的alt="春天框架里注解@ autowired的工作原理”>   

一旦发现,发现结果添加到数组candidateNames:

              春天框架里注解@ autowired的工作原理   

用户bean类的构造函数被称为(仍由getBean触发调用),用户通过调用构造函数创建实例:

  

创建的用户实例与它的名字“用户”插入地图matchingBeans。

  
      <李>最后的用户参考设置为用户属性HelloWorld实例通过反射。这里的变量569行指向HelloWorld bean实例,和价值指向用户实例。
  

字段。集(bean,值),我们可以观察到在调试器,用户属性在HelloWorld例子已经注射成功。

  

要获取更多杰里的原创文章,请关注公众号“汪子熙“:

                 春天框架里注解@ autowired的工作原理

春天框架里注解@ autowired的工作原理