如何以编程方式调用@Value(..)

问题描述 投票:0回答:1

我想以编程方式通过 Spring

@Value(...)
注释读取值。在
@Value(...)
注解后面以编程方式调用 Spring 代码。

我在本主题中找到的所有示例都解释了如何将新的

*.properties
文件添加到 Spring 上下文中。但就我而言,我使用外部键/值存储,
Hashicorp consul
,我想从这个外部 KV 存储读取值。 Spring注释工作正常。它正确读取
consul
中的值。

从应用程序的角度来看,我的代码必须是透明的。我不想在我的项目中看到任何与

consul
相关的代码,如下所示:

ConsulClient consulClient = null;
consulClient.getKVValue("key").toString();

如果我更改应用程序背后的KV存储,我不想修改Java代码。

如果可能,我想以编程方式调用

@Value(...)
注释后面的 Spring 代码,并以标准 Spring 方式获取键的值。

java spring-boot consul hashicorp spring-cloud-consul
1个回答
0
投票

为了以编程方式从 Spring 中的属性文件加载值,您可以使用

Environment
bean(请参阅 javadoc

为此,只需自动装配 bean,并使用

getProperty()
方法:

@Component
public class Foo {
    @Autowired
    private Environment environment;

    public void yourMethod() {
        String value = this.environment.getProperty("key");
        // do whatever
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.