之前Spring中的自动注入(byName,byType)和@Autowired注解的工作原理以及源码分析,那么今天这节课,我们来分析还没讲完的,剩下的核心的方法:
@Nullable
Object resolveDependency(DependencyDescriptor descriptor, @Nullable String requestingBeanName,
@Nullable Set<String> autowiredBeanNames, @Nullable TypeConverter typeConverter) throws BeansException;
该方法表示,传入一个依赖描述(DependencyDescriptor),该方法会根据该依赖描述从BeanFactory中找出对应的唯一的一个Bean对象。
下面来分析一下DefaultListableBeanFactory中**resolveDependency()**方法的具体实现,具体流程图:
Spring中根据Type找Bean的流程| ProcessOn免费在线作图,在线流程图,在线思维导图
findAutowireCandidates()实现
根据类型找beanName的底层流程:根据类型找beanName的底层流程| ProcessOn免费在线作图,在线流程图,在线思维导图
对应执行流程图为:依赖注入流程| ProcessOn免费在线作图,在线流程图,在线思维导图
- 找出BeanFactory中类型为type的所有的Bean的名字,注意是名字,而不是Bean对象,因为我们可以根据BeanDefinition就能判断和当前type是不是匹配,不用生成Bean对象 <