我有一个需要填充到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]);
}
}
}
我发现了一个略有不同的案例,并在下面解释了这一点,以防有人在寻找它。
- 我在属性文件中有trade_id_date={123WC':'20100125','234W':'2010.0125'、1689332:'2010.0125]}
-
下面是一个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
- 所以一定要把它用单引号括起来