spring cloud - 我的 jar 外的 bootstrap.properties

Posted

技术标签:

【中文标题】spring cloud - 我的 jar 外的 bootstrap.properties【英文标题】:spring cloud - bootstrap.properties outside my jar 【发布时间】:2016-08-14 06:38:07 【问题描述】:

我正在尝试将bootstrap.properties 从我的 jar 外部放入,这样它就不会被其他开发人员错误地覆盖。你能在这里给点建议吗?

这是它的内容 - 指向 spring 服务器配置

# application name
spring.application.name=elixium
# The server entry point
spring.cloud.config.uri=http://localhost:8888

【问题讨论】:

你能提供更多细节吗?你试过什么?如果您尝试过某事但失败了,那么错误是什么? 我试过使用@PropertyResource,他忽略了外部位置并在tomcat默认端口上启动 【参考方案1】:

Spring Cloud 使用相同的locations as spring boot 来查找bootstrap.properties(或.yml)。所以classpath:,classpath:/config,file:,file:config/是默认搜索路径,./config/是最高优先级。如果您的文件位于 ./config./ 中,它应该可以正常工作。 change the location 的属性 (spring.cloud.bootstrap.location) 与 boot 略有不同。

【讨论】:

谢谢斯宾塞,是的,我想改变它的位置。那么我应该在 bootstrap.properties 中使用 spring.cloud.bootstrap.location 吗? 不行,它必须是环境变量、命令行参数或 java 系统属性,否则你会遇到鸡与蛋的问题。如果你不提前知道bootstrap.properties的位置,你怎么能知道它的位置。 好吧它可以到达 bootstrap.properties 但我想将它引导到我的 jar 之外 我尝试将 spring.cloud.bootstrap.location=C:\test\test 用作环境参数。这不起作用,我尝试与 cmd 行参数一样。也许您可以将我链接到这两种方法的示例吗?我试图改变位置,但不清楚如何。 Tnx 谢谢斯宾塞 - 我已经用环境变量解决了:spring.cloud.bootstrap.location C:\tradair\config\tang\bootstrap.properties【参考方案2】:

spring.cloud.bootstrap.location 的行为类似于 spring.config.location(在 Spring Boot 2 中),它替换了这些配置文件的位置。

要使其正常工作,必须将其定义为系统属性。 例如:

带罐子:

java -jar
     -Dspring.cloud.bootstrap.location=anyLocation/bootstrap.yml 
      ...

使用 Spring Boot maven 插件:

mvn spring-boot:run 
   -Dspring-boot.run.jvmArguments="-Dspring.cloud.bootstrap.location=anyLocation/bootstrap.yml"

【讨论】:

以上是关于spring cloud - 我的 jar 外的 bootstrap.properties的主要内容,如果未能解决你的问题,请参考以下文章

如何将本地 Spring Cloud 任务项目 jar 文件注册到 Spring Cloud 数据流仪表板

Maven Build-[错误] org.springframework.cloud:spring-cloud-starter-zuul:jar 的“dependencies.dependency.v

springcloud 项目jar运行Nacos出错

spring-cloud导入eclipse时,slf4j注解为啥找不到log变量

Linux shell脚本,按顺序批量启动多个jar包,批量启动spring cloud的jar包

如何允许 Spring Boot 应用程序使用具有 Spring Cloud 依赖关系的自定义 jar