如何根据 Spring Boot 中局部变量的值读取外部属性?

How to read external properties based on value of local variable in Spring Boot?

假设我的 application.properties

中有以下属性
url.2019=http://example.com/2019
url.2020=http://example.com/2020

我有这个方法,

public String getUrl(String year) {

    String url;

    // here I want to read the property value based on the value of year
    // if year is "2019", I want to get the value of ${url.2019}
    // if year is "2020", I want to get the value of ${url.2020}
    // something like #{url.#{year}} ??

    return url;
}

实现此目标的最佳方法是什么?

谢谢。

application.properties:

url.2019=https://
url.2020=https://

Code, just use @ConfigurationProperties Map字段必填,否则取不到值

@Configuration
@PropertySource("put here property file path")
@ConfigurationProperties()
public class ConfigProperties {

    @Value($("url"))
    Map<String,String> urlMap;


    public String getUrl(String year) {
      String url = urlMap.get(year);
      System.out.println(url);
    }
}

可以通过多种方式实现这一目标

如果您的财产不由 spring

管理

https://www.baeldung.com/inject-properties-value-non-spring-class

如果由spring

管理

1.) 你可以在 application.properies 中定义一个映射,可以在你的代码中注入映射读取任何你想要的 属性

2) 你可以注入环境变量并按需读取属性

@Autowired 
private Environment environment;

public String getUrl(String year) {

    String url = "url." + year ;

    String value =environment.getProperty(url);

    return url;
}