1.简介
之前在对象@Configuration注解配置类bean定义的解析中,最后有一步是执行延迟选择器导入
/*** 扫描{@link BeanDefinitionHolder},填充{@link ConfigurationClass}* @param configCandidates*/public void parse(Set<BeanDefinitionHolder> configCandidates) {/* 解析配置类bean定义 */for (BeanDefinitionHolder holder : configCandidates) {BeanDefinition bd = holder.getBeanDefinition();try {/* 解析注解bean定义 */if (bd instanceof AnnotatedBeanDefinition) {parse(((AnnotatedBeanDefinition) bd).getMetadata(), holder.getBeanName());}/* 解析抽象bean定义,且bean类对象存在 */else if (bd instanceof AbstractBeanDefinition && ((AbstractBeanDefinition) bd).hasBeanClass()) {parse(((AbstractBeanDefinition) bd).getBeanClass(), holder.getBeanName());}else {/* 直接解析bean类名 */parse(bd.getBeanClassName(), holder.getBeanName());}}catch (BeanDefinitionStoreException ex) {