You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot application.properties能否以值为键名?如何用@Value解析?

Spring Boot配置项键名使用占位符的可行性及@Value使用说明

1. 配置写法是否可行?

不行。Spring Boot的application.properties配置文件中,配置项的键名不支持使用${}占位符动态替换。

Spring加载配置的逻辑是先扫描并确定所有配置项的键名,之后才会解析值中的占位符。你示例里的${value} = another Value,Spring会把${value}当成一个固定的键名,而不会将它替换成a.property的值value。

2. 如何用@Value解析a.property?

如果只是要读取a.property的配置值,直接使用@Value注解即可,写法很简单:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class MyComponent {
    @Value("${a.property}")
    private String myProperty;

    // 后续可直接使用myProperty变量,它的值就是配置里的"value"
}

替代方案(若需动态键名的配置)

如果你的需求是根据某个配置值来读取对应的另一个配置,可以通过Environment对象手动实现:

import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;

@Component
public class MyDynamicComponent {
    private final Environment environment;

    public MyDynamicComponent(Environment environment) {
        this.environment = environment;
    }

    public String getDynamicValue() {
        // 先获取a.property的值作为目标键名
        String targetKey = environment.getProperty("a.property");
        // 根据目标键名读取对应配置值
        return environment.getProperty(targetKey);
    }
}

调用getDynamicValue()就能拿到another Value的值,前提是配置文件要写成:

a.property = value
value = another Value

内容的提问来源于stack exchange,提问作者Anvesh Raavi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 16:44:52