如何从 Spring Boot Config Server 提供的其他属性文件中的 application.properties 获取密钥?

Posted

技术标签:

【中文标题】如何从 Spring Boot Config Server 提供的其他属性文件中的 application.properties 获取密钥?【英文标题】:How can I get the keys from application.properties within other properties files served by Spring Boot Config Server? 【发布时间】:2018-06-09 15:41:51 【问题描述】:

Spring 官方集中配置教程 (https://spring.io/guides/gs/centralized-configuration/) 说:

它还将发送来自任何名为的文件的所有值 Git 存储库中的 application.properties 或 application.yml。

我想在特定属性文件a-bootiful-client.properties 中使用该文件中的一些属性。

有可能吗?我试过了,但占位符对我不起作用。

例如,我在 application.properties 文件中有一个键值对 key1=val1。然后在a-bootiful-client.properties 文件中,我尝试以another.key=$key1-extraVal 的身份访问该密钥。

谢谢

【问题讨论】:

究竟是什么不起作用? another.key 是否解析为值 $key-extraVal(即没有正确解析)或者您的应用程序根本无法获得 another.key 【参考方案1】:

如果您在 Spring 项目中使用 bootstrap.properties 文件并将其放在您的 application.properties (src/main/resources) 旁边,这是可能的。此属性字段在应用程序的引导期间加载,您可以执行以下操作:

# content of your bootstrap.properties
spring.application.name=a-bootiful-client
spring.cloud.config.uri=YOUR-CONFIG-SERVER-URI
key1=value1

将以下内容添加到您的 a-bootiful-client.properties 文件中:

# content of your a-bootiful-client.properties file in your Git repo

another.key=$key1-extraVal

现在您可以在 Spring 应用程序代码中访问 another.key 值,例如:

@Value("$another.key")
private String myOtherKey;

并且这些值将被连接。

【讨论】:

key1=value1 是一个常见的配置,我想在配置服务器中定义它。放置该值的最佳位置是 spring boot 配置的 application.properties。

以上是关于如何从 Spring Boot Config Server 提供的其他属性文件中的 application.properties 获取密钥?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Spring Boot Config Server 提供的其他属性文件中的 application.properties 获取密钥?

从 Spring Boot 单元测试中排除 Spring Cloud Config Server

如何在 Spring Boot 和 JUnit 测试中定义 spring.config.location?

如何在spring-boot中用application.properties制作config类?

曹工说Spring Boot源码(16)-- Spring从xml文件里到底得到了什么(aop:config完整解析上)

如何使用 Spring-Boot config 配置 JOOQ 设置?