使用spring el将值放入地图中

时间:2016-09-29 06:57:42

标签: java spring spring-annotations properties-file spring-el

我在属性文件中有一个值

currency.codes=US:USD,IN:INR,AU:AUD

我希望使用spring el将这些值放入具有(键,值)对(US,USD)等的地图中 我正在尝试像

这样的东西
@Value("#{'${currency.codes}'.split(',|:')}")
    private Map<String, String> myMap;

这显然不起作用。但如果有人能用这么少的代码或任何其他替代解决方案建议我,我将不胜感激。 有很多这样的属性我需要进入地图。 -TIA

1 个答案:

答案 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;
}