我有一个在Openshift中托管的保险库服务器,我必须访问从vault到我的春季应用程序的秘密。我的bootstrap.yml看起来是这样的:
spring:
application:
name: application-name
profiles: dev
cloud:
vault:
fail-fast: true
host: HOST
port: 443
scheme: https
token: MY_TOKEN
authentication: TOKEN
kv:
enabled: true
backend: secret
profile-separator: '/'
application-name: application-name
我检查了保险库日志,并能够连接从弹簧申请到保险库。
我可以使用访问这个秘密。但是,我希望将秘密的值填充到application.properties中,以更新属性,如spring.datasource.username和spring.datasource.password。
有没有任何方法可以直接从application.properties访问这个秘密?
发布于 2020-01-08 17:15:39
TL;DR:是的,您可以在application.(properties|yml)中使用Vault属性。不建议在bootstrap.(properties.yml)中使用这些。
Spring附带了一个引导上下文,其中初始化了配置库(如Spring领事、Spring和Spring )。这些集成获取配置并将这些配置作为父PropertySource提供给应用程序。Spring在属性绑定和使用PropertySource解析属性值时考虑这些选项(您可以选择使用这些具有最高/最低优先级的Environment )。
在引导应用程序时,通常首先发生的事情之一是@ConfigurationProperties对象中的属性绑定。在加载bootstrap.(properties|yml)时,Spring集成通常还没有运行,因此此时您看不到这些库提供的属性。因此,引导上下文和实际应用程序上下文之间存在分裂。
https://stackoverflow.com/questions/59561774
复制相似问题