https://qhao1024.blog.csdn.net/article/details/105434739
4、依赖注入
相关信息
依赖注入,也就是bean在实例化之后,属性赋值时的处理
@autowired注解,是由AutowiredAnnotationBeanPostProcessor这个类处理的,它实现了smart实例化后置处理接口和mergedBean定义后置处理,所以会有对应方法的实现,
- 首先是找到注入点 :mergedBean定义后置处理 会在属性赋值之前执行方法postProcessMergedBeanDefinition,遍历当前类所有的属性字段,看有没有
-
[postProcessProperties](#kG1ZX)会先解析@value,紧接着是map,list这些类型的处理;接下来最常见的还是普通类型的:会有6个判断或者选择:根据类型寻找
- @Bean(autowireCandidate = true)这个属性,能不能被注入,
- 是不是泛型
- @Qualifier,如果还是找到了多个,那么会进行下面的
- 注意找到的可能是map<String,Object>中value可能是class然后调用getBean,也可能是bean对象,最后就可以利用反射进行赋值了
至于@resource则是处理的,看最下面流程图就可以。
原创2022年1月12日大约 18 分钟