【发布时间】:2018-02-01 23:41:03
【问题描述】:
我有一个使用配置服务器获取配置的 Spring Cloud 应用程序。我们正在使用 Spring Boot 1.5.4 和 Spring Cloud Dalston.SR2。
出于部署目的,我们提供外部bootstrap.yml 文件并使用spring.cloud.bootstrap.location 参数指定其位置。
我们已经为几个属性的服务回退到 .jar 的 bootstrap.yml / application.yml 这一事实而苦苦挣扎。
我能找到解决这个问题的唯一方法是使用spring.config.name 和spring.cloud.bootstrap.name 更改外部配置文件的名称。然后,.jar 中的原始名称将不会被匹配和考虑。
还有其他方法可以解决这个问题吗?
【问题讨论】:
-
您使用的是什么存储库类型? Git,本地人?您可以提供更多配置吗?版本?
-
添加了 Spring Boot 和 Cloud 版本。实际上,我们正在使用 MongoDB 后端 - github.com/spring-cloud-incubator/… 的私有分支,它适用于最新的云版本。但是,我添加云使用信息只是因为
bootstrap.yml文件的行为方式与application.yml相同。即使没有 Spring Cloud,也存在“问题”。我知道该行为遵循规范(扩展配置的属性源顺序 - 15. 应用程序属性打包在您的 jar 中),但它在过去让我们有些头疼。 -
bootstrap.yml 是 spring cloud 的一个特性,所以没有 spring cloud 的 boot 应用永远看不到它,但应该在 jar 中看到 application.yml。
-
正确,没有云我指的是
application.yml。不确定我的意图是否足够清楚 - 让我尝试解释一下:对于 Spring Boot 应用程序(无云)我想指定外部application.yml并禁止 Spring Boot 从 jar 文件中解析 yaml(所以它不会是可作为服务应用程序环境中的属性源)。如果 Cloud 到位,我想为bootstrap.yml做同样的事情。