gpt4 book ai didi

java - 如何重构从属性文件获取多个@Value的方式

转载 作者:行者123 更新时间:2023-11-30 06:01:05 25 4
gpt4 key购买 nike

我需要从 aplication.properties 文件中获取一些值,这些值取决于国家/地区,例如,我需要获取以下值:

@Value("${fr.Name}")
private String frName;

@Value("${fr.address}")
private String frAddress;

@Value("${de.Name}")
private String deName;

@Value("${de.address}")
private String deAddress;

@Value("${bz.Name}")
private String bzName;

@Value("${bz.address}")
private String bzAddress;

然后在我的服务方法中,我将使用多个 if else 语句,并且每次添加新国家/地区时我的值列表都会不断增加

  public String apply(string country){
if ("fr".equals(country))
return frName + frAddress
else if ("de".equals(country))
return deName + deAddress
else if ("bz".equals(country))
return bzName + bzAddress
}

那么如何在不使用多个 if-else 语句的情况下重构它呢?

最佳答案

查看 spring 配置属性。这提供了以更具声明性的方式处理配置属性的机会 https://www.baeldung.com/configuration-properties-in-spring-boot

编辑

@Component
@ConfigurationProperties(prefix = "my", ignoreUnknownFields = false)

public class CountryBasedProps {

Map<String,CountryProps> config = new HashMap<>();


public Map<String, CountryProps> getConfig() {
return config;
}

public void setConfig(Map<String, CountryProps> config) {
this.config = config;
}

public static class CountryProps{
String name;
String address;

/*
other properties, with getters/setters
*/

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getAddress() {
return address;
}

public void setAddress(String address) {
this.address = address;
}

@Override
public String toString() {
return "CountryProps{" +
"name='" + name + '\'' +
", address='" + address + '\'' +
'}';
}
}

@Override
public String toString() {
return "CountryBasedProps{" +
"config=" + config +
'}';
}
}

属性:

my.config.fr.name=French
my.config.fr.address=Paris
my.config.de.name=German
my.config.de.address=Berlin

输出

CountryBasedProps{config={fr=CountryProps{name='French', address='Paris'}, de=CountryProps{name='German', address='Berlin'}}}

注意:

@EnableConfigurationProperties()添加到您的项目

关于java - 如何重构从属性文件获取多个@Value的方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59021793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com