2

下面是我的bootstrap.yml文件:

spring.application.name: backend
spring.cloud.vault:
  host: localhost
  port: 8200
  scheme: http
  authentication: token
  token: root

我的秘密位于secret/backend

在此处输入图像描述

我正在尝试在控制器类中读取这些秘密,如下所示:

    @Value("${masterpassword}")
    private String masterPassword;

但这导致IllegalArgumentException春天抱怨它找不到任何东西masterpassword

org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'secretsController': Injection of autowired dependencies failed; 
nested exception is java.lang.IllegalArgumentException: 
Could not resolve placeholder 'masterpassword' in value "${masterpassword}"

有人可以告诉我我做错了什么吗?谢谢你的帮助 :)

4

2 回答 2

0

对我来说,降级 Spring Boot 版本是可行的。我将父版本更改为:<version>2.3.0.RELEASE</version>并将spring cloud版本更改为:<spring-cloud.version>Hoxton.SR1</spring-cloud.version>

于 2021-02-23T01:16:11.270 回答
0

根据您使用的 Spring Boot 版本,您可能必须spring.config.import: vault://在配置文件中使用(顺便说一下,可以弃用):

在 Spring Cloud Vault 3.0 和 Spring Boot 2.4 中,不推荐使用属性源的引导上下文初始化(bootstrap.yml、bootstrap.properties)。相反,Spring Cloud Vault 支持 Spring Boot 的 Config Data API,它允许从 Vault 导入配置。

https://docs.spring.io/spring-cloud-vault/docs/current/reference/html/#client-side-usage

于 2021-11-10T16:42:28.803 回答