记录一下为啥用了nacos就得写2配置文件

a按照nacos官网的说法,在spring-cloud环境下用了nacos配置中心。就得把nacos的信息写到bootstrap.(yml|properties)下去。

之前一直愚蠢的不知道为啥。今天被人问了。就想搞搞清楚。

直接说我的结果把。

因为加载顺序的原因。一般启动程序的时候main方法 都是SpringApplication.run(mainApplication.class,args);

然后会执行到SpringApplication.run方法。这个run方法其实在spirngCloud环境下会跑2次。

简单说下调用。直接run->prepareEnvironment被调用。发送ApplicationEnvironmentPreparedEvent 被BootstrapApplicationListener 接收到。他里面的bootstrapServiceContext

这个方法里我就说会影响的。1

bootstrapMap.put("spring.config.name", configName); 这个东西会影响找配置文件(吐槽一下spring.config.name有个常量的,这里还直接写字符串。有点low了。好歹intern一下呀。)。找配置文件的代码在ConfigFileApplicationListener的getSearchNames()。然后nacos的starter的jar包的factories里有这么一句。

org.springframework.cloud.bootstrap.BootstrapConfiguration=\

com.alibaba.cloud.nacos.NacosConfigBootstrapConfiguration

所以nacos就会先加载。。


你可能感兴趣的:(记录一下为啥用了nacos就得写2配置文件)