跳至主要內容
4、依赖注入

https://qhao1024.blog.csdn.net/article/details/105434739

4、依赖注入

相关信息

依赖注入,也就是bean在实例化之后,属性赋值时的处理

@autowired注解,是由AutowiredAnnotationBeanPostProcessor这个类处理的,它实现了smart实例化后置处理接口和mergedBean定义后置处理,所以会有对应方法的实现,

  1. 首先是找到注入点 :mergedBean定义后置处理 会在属性赋值之前执行方法postProcessMergedBeanDefinition,遍历当前类所有的属性字段,看有没有
  2. [postProcessProperties](#kG1ZX)会先解析@value,紧接着是map,list这些类型的处理;接下来最常见的还是普通类型的:会有6个判断或者选择:根据类型寻找
    1. @Bean(autowireCandidate = true)这个属性,能不能被注入,
    2. 是不是泛型
    3. @Qualifier,如果还是找到了多个,那么会进行下面的
  3. 注意找到的可能是map<String,Object>中value可能是class然后调用getBean,也可能是bean对象,最后就可以利用反射进行赋值了

至于@resource则是处理的,看最下面流程图就可以。


junziln原创2022年1月12日大约 18 分钟SpringSpring