не удается преобразовать из String в приложение HashMap Spring Boot - PullRequest
0 голосов
/ 24 августа 2018

У меня есть код ниже и проблема. Я запускаю загрузочное приложение Spring для проверки использования файла application.properties.

файл application.properties,

server.port=8080
server.servlet.context-path=/HelloWorldBoot

myMap={key1:'value1',key2:'value2'}

Код контроллера ниже,

@RestController
public class MyController {

    @Autowired
    Environment env;

    @Value("#{${myMap}}")  
    private HashMap<String,String> myMapUsingValue;

    @GetMapping("/hello")
    public String hello() {
        System.out.println("myMapUsingValue : "+myMapUsingValue);

        HashMap<String, String> myMapUsingEnv = env.getProperty("myMap", HashMap.class);
        System.out.println("myMapUsingEnv : "+myMapUsingEnv);

        return "Hello World";
    }
}

Теперь, когда я нажму на URL: http://localhost:8080/HelloWorldBoot/hello

Информация о карте с помощью @Value будет напечатана успешно,

myMapUsingValue : {key1=value1, key2=value2} 

Но я получаю сообщение об ошибке, как показано ниже, при доступе к той же Карте с помощью Environment API,

No converter found capable of converting from type [java.lang.String] to type [java.util.HashMap<?, ?>]]

Как я могу решить это? Как я могу прочитать карту непосредственно из файла свойств приложения с помощью API-интерфейса переменной среды?

Любая помощь приветствуется. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 25 июня 2019

Не думай слишком много, просто проверь свой класс pojo. Получение значения из базы данных другое, поле из класса pojo другое.

0 голосов
/ 24 августа 2018

Переменные среды всегда являются строками. Тот факт, что значение Spring инжектор знает, как преобразовать их в карту, очень приятно, но при использовании API Java-среды вам придется самостоятельно проанализировать эту строку и преобразовать ее в карту.

Что-то вроде Джексона может сделать это проще. В противном случае вы можете написать служебный метод, который делает это. Вы можете посмотреть в источнике весны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...