根据查找的资料,bootstrap.yml,是springcloud下专用的,又好像说springboot默认不加载bootstrap.yml(或者bootstrap.properties),所以,
在springcloud下,需要加入下面的依赖
<dependency>-->
<groupId>org.springframework.cloud</groupId>-->
<artifactId>spring-cloud-starter-bootstrap</artifactId>-->
</dependency>-->
特意看了一下,这个依赖会引入
[INFO] +- org.springframework.cloud:spring-cloud-starter-bootstrap:jar:3.0.3:compile
[INFO] | \- org.springframework.cloud:spring-cloud-starter:jar:3.0.3:compile
[INFO] | \- org.springframework.security:spring-security-rsa:jar:1.0.10.RELEASE:compile
[INFO] | \- org.bouncycastle:bcpkix-jdk15on:jar:1.68:compile
[INFO] | \- org.bouncycastle:bcprov-jdk15on:jar:1.68:compile
所以, 看了下 spring-cloud-starter-bootstrap:jar, spring-cloud-starter:jar 这两个JAR,里面并没有有用的东西,比如 spring.factories等这些东西,只有 spring-cloud-starter-bootstrap:jar这个里面,有一个org\springframework\cloud\bootstrap\marker\Marker.class,奶奶的,什么情况,一时搞不懂。查了又查,试了又试,一直觉得
<dependency>-->
<groupId>org.springframework.cloud</groupId>-->
<artifactId>spring-cloud-starter-bootstrap</artifactId>-->
</dependency>-->
这个引入的东东,到底有什么用???也没有看到class类文件呀??
最后,通过 org.springframework.cloud.bootstrap.BootstrapApplicationListener里看到,
@Override
public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {
ConfigurableEnvironment environment = event.getEnvironment();
if (!bootstrapEnabled(environment) && !useLegacyProcessing(environment)) {
return;
}
public static boolean bootstrapEnabled(Environment environment) {
return environment.getProperty(BOOTSTRAP_ENABLED_PROPERTY, Boolean.class, false) || MARKER_CLASS_EXISTS;
}
所以,到这里,答案解开了。spring-cloud-starter-bootstrap:jar这个里面,有一个org\springframework\cloud\bootstrap\marker\Marker.class 这个类,只是一个标记的作用。
如果上下文里有它,那么就认为 bootstrapEnabled 开启了,从而bootstrap.xml yam起作用了。
我说明白了吗?