如何在 Spring Boot 中获取 yaml 中的环境变量
How to get environment variable in yaml in Spring Boot
我正在尝试在应用程序启动时读取机密并使其可供
使用
- 其他class访问
- 并从其他 yaml 文件访问值(用于与其他工具 Eg.api 键集成)。
springboot 应用程序使用 EnvironmentPostProcessorImpl
class 在启动时将秘密读取到 Map<String,String>
。
我想了解什么是使 EnvironmentPostProcessorImpl
class 中的 Map<String,String>
可供其他 Java class 使用的正确方法使用占位符访问 yaml 文件,例如。 url: "${URL}"
,如果可以的话?任何参考都会有所帮助。
在您的 EnvironmentPostProcessor
implementation, you should create a MapPropertySource
中,来自您的 Map<String, String>
,并将其添加到正在 post 处理的 ConfigurableEnvrionment
中。这将允许应用程序中的组件使用 @ConfigurationProperties
、@Value
、属性 占位符等访问这些属性
Spring Boot 有很多方法可以配置它的Environment
。这是包含配置提示的文档 reference for configuration and Spring Boot blog。
如果您需要通过 OS 环境变量注入一些 Spring 变量,您需要将所有 .
替换为 _
并删除所有 -
符号。例如,如果你需要注入 属性 my-prefix.api.url
,你需要声明环境变量 MYPREFIX_API_URL
然后你可以像普通的 Spring 变量一样访问你的变量。
@Value("${my-prefix.api.url}")
String url;
我正在尝试在应用程序启动时读取机密并使其可供
使用- 其他class访问
- 并从其他 yaml 文件访问值(用于与其他工具 Eg.api 键集成)。
springboot 应用程序使用 EnvironmentPostProcessorImpl
class 在启动时将秘密读取到 Map<String,String>
。
我想了解什么是使 EnvironmentPostProcessorImpl
class 中的 Map<String,String>
可供其他 Java class 使用的正确方法使用占位符访问 yaml 文件,例如。 url: "${URL}"
,如果可以的话?任何参考都会有所帮助。
在您的 EnvironmentPostProcessor
implementation, you should create a MapPropertySource
中,来自您的 Map<String, String>
,并将其添加到正在 post 处理的 ConfigurableEnvrionment
中。这将允许应用程序中的组件使用 @ConfigurationProperties
、@Value
、属性 占位符等访问这些属性
Spring Boot 有很多方法可以配置它的Environment
。这是包含配置提示的文档 reference for configuration and Spring Boot blog。
如果您需要通过 OS 环境变量注入一些 Spring 变量,您需要将所有 .
替换为 _
并删除所有 -
符号。例如,如果你需要注入 属性 my-prefix.api.url
,你需要声明环境变量 MYPREFIX_API_URL
然后你可以像普通的 Spring 变量一样访问你的变量。
@Value("${my-prefix.api.url}")
String url;