Springcloud項目使用Springcloud-config做爲分佈式配置,配置參數都放在config裏,不一樣的環境有不一樣的問題:web
項目本地: boostrap.yml 遠程配置: application.yml application-local.yml application-dev.yml application-test.yml application-prod.yml
其中application-local.yml
是本地開發環境,因爲開發時,常常修改配置,就會頻繁去修改config
。
因此想將application-local.yml
放在項目本地,而不是在config
裏。
也就是最終變成:spring
項目本地: boostrap.yml application-local.yml 遠程配置: application.yml application-dev.yml application-test.yml application-prod.yml
調整以後,發現項目啓動失敗,項目並不會去讀取本地的application-local.yml
,須要咱們來指定加載。bootstrap
原先的啓動代碼:app
SpringApplication.run(Application.class, args);
改爲:分佈式
new SpringApplicationBuilder(Application.class) .properties("spring.config.location=classpath:application-${spring.profiles.active}.yml,classpath:bootstrap.yml") .run(args);
必定要指定classpath:bootstrap.yml
(若是還有其餘本地文件,也是同樣),若是在沒有配置spring.config.location
的狀況下,項目會默認加載classpath:bootstrap.yml
,若是指定了就只會加載指定的配置文件。測試
若是用了spring-test+junit,能夠經過properties
指定配置文件:ui
@SpringBootTest(properties = {"spring.config.location=classpath:tscm-service-oem-forecast-${spring.profiles.active}.yml,classpath:bootstrap.yml"})
也就是最終是:spa
@SpringBootTest(classes = {Application.class}, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, properties = {"spring.config.location=classpath:tscm-service-oem-forecast-${spring.profiles.active}.yml,classpath:bootstrap.yml"})