Link

8. 自动注入(属性赋值)

内容

  1. @Autowired/Value注入底层源码解析
  2. @Qulifier底层源码解析
  3. @Lazy底层源码解析
  4. 泛型注入底层源码解析
  5. @Resource底层源码解析

<aside> 👉🏼 实例化之后->属性设置

  1. 定于BD全局的自动注入类型(过期的方法): AbstractAutowireCapableBeanFactory#populateBean
  2. 处理Autowired/Value.. 注解的处理器AutowiredAnnotationBeanPostProcessor

</aside>

流程图

Untitled

依赖注入底层原理流程图


Spring中到底有几种依赖注入的方式?

首先分两种:

  1. 手动注入
  2. 自动注入

手动注入

在XML中定义Bean时,就是手动注入,因为是程序员手动给某个属性指定了值

<bean name="userService" class="com.luban.service.UserService">
 <property name="orderService" ref="orderService"/>
</bean>

上面这种底层是通过set方法进行注入。

<bean name="userService" class="com.luban.service.UserService">
 <constructor-arg index="0" ref="orderService"/>
</bean>

上面这种底层是通过构造方法进行注入。

所以手动注入的底层也就是分为两种:

  1. set方法注入
  2. 构造方法注入

自动注入

自动注入又分为两种:

  1. XML的autowire自动注入