Spring Boot 如何处理@Autowired(一)
这篇小文可知AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues()最终执行对@Autowired的属性实例进行织入;然后以DefaultListableBeanFactory.resolveDependency()->DefaultListableBeanFactory.doResolveDependency()->DependencyDescriptor.resolveCandidate()->beanFactory.getBean()的链条进行创建field bean实例:
public Object resolveDependency(){
//省略其他code
{
Object result = getAutowireCandidateResolver().getLazyResolutionProxyIfNecessary(
descriptor, requestingBeanName);
if (result == null) {
result = doResolveDependency(descriptor, requestingBeanName, autowiredBeanNames, typeConverter);
}
return result;
}
}
public Object resolveCandidate(String beanName, Class<?> requiredType, BeanFactory beanFactory)
throws BeansException {
return beanFactory.getBean(beanName);
}
现在是不是豁然开朗了?整个调用链路就清晰起来了~,本来有点懒,就不总结了,总结就交给读者朋友了,欢迎留言加友讨论~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。