JavaAutowired注解深入分析 |
||||||||||||||||
今天是正月初八,先祝大家新年快乐。前几天遇见了一次Autowired注入失败的问题,所以找时间研究了一下相关的Spring源码,分享一下。如果哪位大佬发现问题,请帮忙反馈。
?
Service代码
?
我们的目的是:把HomeService通过Autowired注解注入HomeController中,从而在index方法中实现对HomeService方法的内部调用。
?
applyMergedBeanDefinitionPostProcessors方法,这个方法的作用是寻找HomeController的字段里,有没有哪个字段添加了Autowired注解。
?
这段逻辑实际上是在遍历容器中的BeanPostProcessor,然后执行BeanPostProcessor中的逻辑,我们需要关注的是AutowiredAnnotationBeanPostProcessor,这个类是实现Autowired逻辑的核心类,大家重点关注。
?
可以看到逻辑很少。第一行代码就是找HomeController中被Autowired注解修饰的字段。
?
以上逻辑执行完,我们就拿到了待注入的homeService的元信息对象,即:InjectionMetadata。 重要逻辑是:
?
只有两行逻辑。
?
|