能注入拿到正确的值吗?
答案:不能,这四个都有值,除了beanFactory是DefaultListableBeanFactory,其他钱都是AnnotationConfigApplicationContext这个值,并不是自己的值
![](https://img-blog.csdnimg.cn/img_convert/89bdd19aedbb920382e9f7f8d0dd5826.png)
执行结果:
![](https://img-blog.csdnimg.cn/img_convert/cd57e8c403e8c1d3145a347695c80d01.png)
org.springframework.beans.factory.support.DefaultListableBeanFactory#registerResolvableDependency
![](https://img-blog.csdnimg.cn/img_convert/641ff3fde8f0bd57a13cef35f1a710f3.png)
我们来分析源码:
org.springframework.beans.factory.support.DefaultListableBeanFactory#findAutowireCandidates
![](https://img-blog.csdnimg.cn/img_convert/f6f47d21277a54be9e433e6b3bd42589.png)
获取所有BeanFactory的bean,发现没有,
遍历四大忽略的类
![](https://img-blog.csdnimg.cn/img_convert/1f055bffdd570ff74f32502a812d5630.png)
直接返回该结果:
![](https://img-blog.csdnimg.cn/img_convert/f8844b5d00a916f23c80df056baa38ee.png)
总结:1.寻找四大忽略自动注入的bean,肯定是没有的
2.进行遍历四大忽略的注解类型,从hashmap总获取对应的value
![](https://img-blog.csdnimg.cn/img_convert/3e07f0d3ff9c27cabe6baf2930661dab.png)
然后返回该值进行自动注入。
![](https://img-blog.csdnimg.cn/img_convert/9f46ff05ef24798a434b59c23ca809ec.png)
四大忽略的类型分别对应的value已经标注。