2016-09-29 3 views
1

У меня есть значение в файле свойств, который идетПолучить значения в карте с помощью пружины эль

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

Я ищу, чтобы получить эти значения в карте с (ключ, значение) пары, как (США, USD) и т.д., используя пружинный эль Я пытаюсь что-то вроде

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

это, очевидно, не работает. Но я был бы признателен, если кто-нибудь может предложить мне такой минимальный код или любое другое альтернативное решение. Есть много таких свойств, которые мне нужны, чтобы попасть в карты. -TIA

+0

Вы можете найти свой here..https ответ: //stackoverflow.com/questions/28369458/how-to-fill-hashmap-from-java-property-file-with-spring-value – mhasan

ответ

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