如何使用 Spring Boot 在 Map 中加载属性?
How can I load propeties in a Map with SpringBoot?
我尝试在我的 SpringBoot 应用程序中初始化一个地图,但我做错了。
我的config.properties:
myFieldMap.10000.fieldName=MyFieldName
myFieldMap.10000.fieldName2=MyFieldName2
myFieldMap.10001.fieldName=MyFieldName
myFieldMap.10001.fieldName2=MyFieldName2
myFieldMap.10002.fieldName=MyFieldName
myFieldMap.10003.fieldName2=MyFieldName2
...
(是否可以对地图使用某种括号符号,例如 myFieldMap[10001].fieldName
(我看到它用于列表)。
我尝试使用 MyConfig.class:
@PropertySource("classpath:config.properties")
@Component
public class MyConfig {
private java.util.Map<Integer, MyMapping> theMappingsMap = new HashMap<Integer, MyMapping>();
public Map<String, MyMapping> getTheMappingsMap() {
return theMappingsMap;
}
public void setTheMappingsMap(Map<String, MyMapping> theMappingsMap) {
this.theMappingsMap= theMappingsMap;
}
public class MyMapping {
private String fieldName;
private String fieldName2;
public String getFieldName() {
return fieldName;
}
public String getFieldName2() {
return fieldName2;
}
public void setFieldName(final String fieldName) {
this.fieldName = fieldName;
}
public void setFieldName2(final String fieldName) {
this.fieldName2 = fieldName;
}
}
}
我必须如何调整我的代码才能让 SpringBoot 使用 config.properties 文件中的定义初始化我的配置 (Map)?
您缺少 @ConfigurationProperties
注释。试试这个
@PropertySource("classpath:config.properties")
@Configuration
@ConfigurationProperties
public class MyConfig {
private java.util.Map<String, MyMapping> myFieldMap = new HashMap<>();
....
}
您的代码的另一个问题是,如果您想将 MyMapping class 作为 MyConfig 的内部 class,则需要将其声明为静态的。或者你可以把它作为一个单独的 class.
我尝试在我的 SpringBoot 应用程序中初始化一个地图,但我做错了。
我的config.properties:
myFieldMap.10000.fieldName=MyFieldName
myFieldMap.10000.fieldName2=MyFieldName2
myFieldMap.10001.fieldName=MyFieldName
myFieldMap.10001.fieldName2=MyFieldName2
myFieldMap.10002.fieldName=MyFieldName
myFieldMap.10003.fieldName2=MyFieldName2
...
(是否可以对地图使用某种括号符号,例如 myFieldMap[10001].fieldName
(我看到它用于列表)。
我尝试使用 MyConfig.class:
@PropertySource("classpath:config.properties")
@Component
public class MyConfig {
private java.util.Map<Integer, MyMapping> theMappingsMap = new HashMap<Integer, MyMapping>();
public Map<String, MyMapping> getTheMappingsMap() {
return theMappingsMap;
}
public void setTheMappingsMap(Map<String, MyMapping> theMappingsMap) {
this.theMappingsMap= theMappingsMap;
}
public class MyMapping {
private String fieldName;
private String fieldName2;
public String getFieldName() {
return fieldName;
}
public String getFieldName2() {
return fieldName2;
}
public void setFieldName(final String fieldName) {
this.fieldName = fieldName;
}
public void setFieldName2(final String fieldName) {
this.fieldName2 = fieldName;
}
}
}
我必须如何调整我的代码才能让 SpringBoot 使用 config.properties 文件中的定义初始化我的配置 (Map)?
您缺少 @ConfigurationProperties
注释。试试这个
@PropertySource("classpath:config.properties")
@Configuration
@ConfigurationProperties
public class MyConfig {
private java.util.Map<String, MyMapping> myFieldMap = new HashMap<>();
....
}
您的代码的另一个问题是,如果您想将 MyMapping class 作为 MyConfig 的内部 class,则需要将其声明为静态的。或者你可以把它作为一个单独的 class.