Я б подумав про рефакторинг служби, щоб повернути об'єкт домену, а не рядки JSON, і дозволити Spring обробляти серіалізацію (через те, MappingJacksonHttpMessageConverter
як ви пишете). Станом на весну 3.1, реалізація виглядає досить акуратно:
@RequestMapping(produces = MediaType.APPLICATION_JSON_VALUE,
method = RequestMethod.GET
value = "/foo/bar")
@ResponseBody
public Bar fooBar(){
return myService.getBar();
}
Коментарі:
По- перше, <mvc:annotation-driven />
чи @EnableWebMvc
повинні бути додані до прикладної конфігурації.
Далі, виробляє атрибут @RequestMapping
анотації використовується для вказівки типу вмісту відповіді. Отже, для нього слід встановити MediaType.APPLICATION_JSON_VALUE (або "application/json"
).
Нарешті, слід додати Джексона, щоб будь-яка серіалізація та десеріалізація між Java та JSON автоматично оброблялася до Spring (залежність Джексона виявляється Spring, і MappingJacksonHttpMessageConverter
вона буде під капотом).