Java 从属性文件读取映射并使用spring注释@Value加载

Java 从属性文件读取映射并使用spring注释@Value加载,java,spring,Java,Spring,我有一个需要填充到Springbean上的映射的(键/值)列表: 我可以使用下面的列表: 属性: @Value("#{'${dmin.details.fields}'.split(',')}") private List<String> fields; dmin.details.fields=Abdullah,Zayed,+201020010 呼叫: @Value("#{'${dmin.details.fields}'.split(',')}") private List<S

我有一个需要填充到Springbean上的映射的(键/值)列表:

我可以使用下面的列表:

属性:

@Value("#{'${dmin.details.fields}'.split(',')}")
private List<String> fields;
dmin.details.fields=Abdullah,Zayed,+201020010

呼叫:

@Value("#{'${dmin.details.fields}'.split(',')}")
private List<String> fields;
@Value(“#{${dmin.details.fields}.split(',')}”)
私有列表字段;

有人能告诉我这在Spring中是否可行吗?

由于我在Spring中找不到任何方法将该属性作为地图来阅读,因此我必须使用Spring填写的列表来填写地图,如下所示:

@Value("#{'${dmin.details.fields}'.split(',')}")
private List<String> fields;

private Map<String, String> fieldsMap;

@PostConstruct
public void init() {
    fieldsMap = new HashMap<String, String>();
    if (fields != null && fields.size() != 0) {
        for (String field : fields) {
            String[] splittedField = field.split(",");
            fieldsMap.put(splittedField[0], splittedField[1]);
        }
    }
}
@Value(“#{${dmin.details.fields}.split(',')}”)
私有列表字段;
私有地图领域地图;
@施工后
公共void init(){
fieldsMap=newhashmap();
if(fields!=null&&fields.size()!=0){
用于(字符串字段:字段){
String[]splittedField=field.split(“,”);
fieldsMap.put(拆分字段[0],拆分字段[1]);
}
}
}

应用程序属性:

property.map={first:value, second:value}
然后在Java代码中,您可以:

@Value("#{${property.map}}")
Map<String, String> map;
@Value(“#{${property.map}”)
地图;

我发现了一个稍微不同的案例,并在下面解释,以防有人在找它

  • 我在属性文件中有trade_id_date={'123WC':'20100125','234W':'20100125',1689332:'20100125'}
  • 下面是一个java类

    @值(“#{${trade_id_date}”) 私有地图

  • 如果您不将左侧括在单引号中,如果它是字母数字的,那么您将得到

    Expression parsing failed; nested exception is org.springframework.expression.spel.SpelParseException
    @0: EL1044E: Unexpectedly ran out of input
    
  • 所以一定要用单引号括起来

  • 它应该是
    property.map={first:'value',second:'value'}
    。同样值得注意的是,它需要Spring4.1+()谢谢,我遇到了这个问题,你的帖子确实帮了我的忙@basu76-如果我的评论有帮助,你可以投我的票:)