0

我创建了一个 Hashicorp Vault,我的秘密可以在secret/demo-app/keycloak. 我在这里有 2 个值:clientId,clientSecret

我设置bootstrap.properties

spring.application.name=demo-app
spring.cloud.vault.token=00000000-0000-0000-0000-000000000000
spring.cloud.vault.scheme=http
spring.cloud.vault.kv.enabled=true

但是我没有找到一种方法来制作一些可以在启动时读取这些值的@Data类:@Configuration@ConfigurableProperties

@Data
@Configuration
@ConfigurationProperties("keycloak")
public class Client {
    private String clientId;
    private String clientSecret;

    @PostConstruct
    public void init() {
        System.out.println("PostConstruct: " + this.toString());
    }
}

但似乎不起作用:

PostConstruct: Client(clientId=null, clientSecret=null)

任何想法我错过了什么?提前致谢。

4

1 回答 1

0

这是我的工作解决方案之一。我在保险库中有一个秘密,即 key=secret, values=. 请注意 setter 和 getter 应该相应地定义。

@ConfigurationProperties("mysecret")
public class MySecret {
    private String secret;
    public String getSecret() {
        return secret;
    }
    public void setSecret(String secret) {
        this.secret = secret;
    }
}

现在要在任何服务类中使用它,我们可以使用 @EnableConfigurationProperties 注释,然后自动装配它。

@Service
@EnableConfigurationProperties(MySecret.class)
class my ClientService {

@autowire private MySecret mySecret;
}

这个对我有用。

于 2022-01-11T15:06:13.140 回答