如何从 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完整解析上)