我在属性文件中有一个值
currency.codes=US:USD,IN:INR,AU:AUD
我希望使用spring el将这些值放入具有(键,值)对(US,USD)等的地图中 我正在尝试像
这样的东西@Value("#{'${currency.codes}'.split(',|:')}")
private Map<String, String> myMap;
这显然不起作用。但如果有人能用这么少的代码或任何其他替代解决方案建议我,我将不胜感激。 有很多这样的属性我需要进入地图。 -TIA
答案 0 :(得分:1)
您可以编写静态辅助方法和use that in your expression来降低SpEL代码的复杂性。
public class MapDecoder {
public static Map<String, String> decodeMap(String value) {
Map<String, String> map = new LinkedHashMap<>();
String[] pairs = value.split(",");
for (String pair : pairs) {
String[] parts = pair.split(":");
map.put(parts[0], parts[1]);
}
return map;
}
}
public class MyBean {
@Value("#{T(mypackage.MapDecoder).decodeMap('${currency.codes}')}")
private Map<String, String> myMap;
}