1,BeanDifinition的生成,合并
private <T> void doRegisterBean(Class<T> beanClass, @Nullable String name,
@Nullable Class<? extends Annotation>[] qualifiers, @Nullable Supplier<T> supplier,
@Nullable BeanDefinitionCustomizer[] customizers) {
AnnotatedGenericBeanDefinition abd = new AnnotatedGenericBeanDefinition(beanClass);
。。。。。配置
BeanDefinitionHolder definitionHolder = new BeanDefinitionHolder(abd, beanName);
definitionHolder = AnnotationConfigUtils.applyScopedProxyMode(scopeMetadata, definitionHolder, this.registry);
BeanDefinitionReaderUtils.registerBeanDefinition(definitionHolder, this.registry);
}
在doRegisterBean里面,AnnotatedGenericBeanDefinition利用beanClass构建一个abd-BeanDefinition对象,对abd进行配置,将abc和beanName存到definitionHolder中。
registry.registerBeanDefinition(beanName, definitionHolder.getBeanDefinition());
void registerBeanDefinition(String var1, BeanDefinition var2) throws BeanDefinitionStoreException;
registerBeanDefinition利用beanName和definitionHolder的beanDedinition进行注册。
public void registerBeanDefinition(String beanName, BeanDefinition beanDefinition)
this.beanDefinitionMap.put(beanName, beanDefinition);
以beanName为键,以beanDefinition为Value,put到beanDefinitionMap中,存入到IOC容器中。