关于springboot:Spring-Boot-如何处理Autowired二

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);
    }

当初是不是恍然大悟了?整个调用链路就清晰起来了~,原本有点懒,就不总结了,总结就交给读者敌人了,欢送留言加友探讨~

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理