Spring boot 如何使用SpringBoot在地图中加载属性?
我试图在SpringBoot应用程序中初始化映射,但我做错了什么 我的config.properties:Spring boot 如何使用SpringBoot在地图中加载属性?,spring-boot,properties,configuration,hashmap,configuration-files,Spring Boot,Properties,Configuration,Hashmap,Configuration Files,我试图在SpringBoot应用程序中初始化映射,但我做错了什么 我的config.properties: myFieldMap.10000.fieldName=MyFieldName myFieldMap.10000.fieldName2=MyFieldName2 myFieldMap.10001.fieldName=MyFieldName myFieldMap.10001.fieldName2=MyFieldName2 myFieldMap.10002.fieldName=MyFieldNa
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;
}
}
}
@PropertySource(“classpath:config.properties”)
@组成部分
公共类MyConfig{
private java.util.Map theMappingsMap=new HashMap();
公共地图getTheMappingsMap(){
返回地图;
}
公共void设置映射映射(映射映射映射){
this.theMappingsMap=theMappingsMap;
}
公共类MyMapping{
私有字符串字段名;
私有字符串字段名2;
公共字符串getFieldName(){
返回字段名;
}
公共字符串getFieldName2(){
返回字段名2;
}
public void setFieldName(最终字符串fieldName){
this.fieldName=字段名;
}
public void setFieldName2(最终字符串fieldName){
this.fieldName2=字段名;
}
}
}
如何调整我的代码,让SpringBoot使用config.properties文件中的定义初始化我的配置(Map)?您缺少
@ConfigurationProperties
注释。请尝试此操作
@PropertySource("classpath:config.properties")
@Configuration
@ConfigurationProperties
public class MyConfig {
private java.util.Map<String, MyMapping> myFieldMap = new HashMap<>();
....
}
@PropertySource(“classpath:config.properties”)
@配置
@配置属性
公共类MyConfig{
private java.util.Map myFieldMap=new HashMap();
....
}
代码的另一个问题是,如果要将MyMapping类作为MyConfig的内部类,则需要将其声明为静态。否则,可以将其作为单独的类。缺少
@ConfigurationProperties
注释。请尝试此操作
@PropertySource("classpath:config.properties")
@Configuration
@ConfigurationProperties
public class MyConfig {
private java.util.Map<String, MyMapping> myFieldMap = new HashMap<>();
....
}
@PropertySource(“classpath:config.properties”)
@配置
@配置属性
公共类MyConfig{
private java.util.Map myFieldMap=new HashMap();
....
}
代码的另一个问题是,如果要将MyMapping类作为MyConfig的内部类,则需要将其声明为静态类。否则可以将其作为单独的类。Aaargh!当然。就是这样。同时,我发现我可以使用类似myFieldMap[10000]fieldname=MyFieldName myFieldMap[10000]的表示法fieldname2=myfieldname2aargh!当然。就是这样。同时我发现我可以使用像myFieldMap[10000]fieldname=MyFieldName=myFieldMap[10000]fieldname2=MyFieldName2这样的符号