交流
商城
MCN
登入
注册
首页
提问
分享
讨论
建议
公告
动态
发表新帖
发表新帖
spring cloud 第2 章:BootstrapImportSelectorConfiguration
分享
未结
0
1227
李延
LV6
2021-06-09
悬赏:20积分
# 作用 在上一章中,我们分析到在父上下文最后扫描的类是BootstrapImportSelectorConfiguration。我们看一下这个类的内容,和这个类所在包内加载的内容。 # import ```java @Configuration(proxyBeanMethods = false) @Import(BootstrapImportSelector.class) public class BootstrapImportSelectorConfiguration { } ``` 我们看到这个类上有一个Import注解,而这个注解我们之前分析过,BootstrapImportSelector是DeferredImportSelector的子类。这个和springboot自动装载的机制是一样的到了。我们具体看一下这个类的selectImports方法。 # BootstrapImportSelector ```java @Override public String[] selectImports(AnnotationMetadata annotationMetadata) { ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); // Use names and ensure unique to protect against duplicates List<String> names = new ArrayList<>( SpringFactoriesLoader.loadFactoryNames(BootstrapConfiguration.class, classLoader)); names.addAll(Arrays.asList(StringUtils .commaDelimitedListToStringArray(this.environment.getProperty("spring.cloud.bootstrap.sources", "")))); List<OrderedAnnotatedElement> elements = new ArrayList<>(); for (String name : names) { try { elements.add(new OrderedAnnotatedElement(this.metadataReaderFactory, name)); } catch (IOException e) { continue; } } AnnotationAwareOrderComparator.sort(elements); String[] classNames = elements.stream().map(e -> e.name).toArray(String[]::new); return classNames; } ``` 这里我们就看到这个和springboot的自动装配是完全一样的逻辑,而自动装配加载的是:EnableAutoConfiguration 在这里加载的是BootstrapConfiguration。 所有在spring.factoiesp配置文件中BootstrapConfiguration变量指定的类,在父上下文中会被提前加载。
回帖
消灭零回复
提交回复
热议榜
java 相关知识分享
8
好的程序员与不好的程序员
6
写给工程师的十条精进原则
5
spring boot以jar包运行配置的logback日志文件没生成
5
一步一步分析SpringBoot启动源码(一)
5
MockMvc测试
5
【吐槽向】是不是有个吐槽的板块比较好玩
4
logstash jdbc同步mysql多表数据到elasticsearch
3
IntelliJ IDEA 优质License Server
3
.gitignore忽略规则
3
SpringBoot启动源码分析
3
一步一步分析SpringBoot启动源码(三)
3
2
一步一步分析SpringBoot启动源码(二)
2
积分不够将无法发表新帖
2
官方产品
Meta-Boot - 基于MCN
MCN - 快速构建SpringBoot应用
微信扫码关注公众号