Springcloud Config支持本地配置文件

背景:

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"})
相關文章
相關標籤/搜索