从属性文件中读取Map并加载spring annotation@Value



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

dmin.details.fieldsMap=name,Abdullah,
             street,Zayed,
             phone,+201020102010

使用以下列表对我来说很好:

属性:

admin.details.fields=阿卜杜拉,扎耶德,+201020102010

呼叫:

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

有人能建议一下这在春天是否可行吗

application.properties:

property.map={first:value, second:value}

然后在Java代码中,您可以:

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

由于我在spring中找不到任何方法将属性读取为Map,我不得不使用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]);
        }
    }
}

我发现了一个略有不同的案例,并在下面解释了这一点,以防有人在寻找它。

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

    @价值("#{${trade_id_date}}")private Map tradeIdDateMap;

如果你不把左手边用单引号括起来,如果它是字母数字的,那么你会得到

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

最新更新