Является ли Spring MVC 3.1 совместимым с Jackson 2.0? Будет ли Spring автоматическое обнаружение MVC Jackc на пути к классам, и делегирование в Jackson для запросов с типом контента JSON все еще работает?
Джексон 2.0 с Spring 3.1
Ответ 1
Поддержка Jackson 2 добавлена в Spring 3.2, а также backported в Spring 3.1.2 (SPR-9507)
Ответ 2
Кит Дональд (из источника spring) написал в твиттере следующее время назад.
Spring Поддержка MVC для Jackson 2; также работает с родным Джексоном Функция "красивой печати" https://gist.github.com/2423129
Я не пробовал MappingJackson2HttpMessageConverter
, найденный в gist выше, но это удивит меня, если он не сработает.
Ответ 3
Так как Spring 3.1.2, вы просто должны добавить json-databind jar в свой путь к классам.
В Maven вы можете настроить его следующим образом:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
Остальная магия будет выполняться автоматически Spring.
Смотрите: http://norrisshelton.wordpress.com/2012/07/15/spring-3-mvc-with-json-via-jackson-2-0/
Ответ 4
Для Spring 3.1.2 и Джексона 2 -
-
Как указано выше, автоматическая поддержка JustWorks ™
-
но конфигурация не выполняется, так как большая часть веб-сайта усеяна предустановленными механизмами конфигурации Spring3/Jackson2.
Итак, для потомков я перечислил взломы (или это официальный способ) для настройки конвертера Jackson. В этом конкретном случае я настраиваю конвертер для возврата дат в формате ISO-8601:
package foo.bar.JacksonConfig;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.stereotype.Component;
@Component
public class JacksonConfig implements BeanPostProcessor {
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
public Object postProcessAfterInitialization(Object bean, String beanName)
throws BeansException {
if (bean instanceof MappingJackson2HttpMessageConverter) {
MappingJackson2HttpMessageConverter jsonConverter =
(MappingJackson2HttpMessageConverter) bean;
ObjectMapper objectMapper = jsonConverter.getObjectMapper();
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
jsonConverter.setObjectMapper(objectMapper);
}
return bean;
}
}
Ответ 5
Чтобы быть ясным, Spring 3.1 не имеет встроенной поддержки для Jackson 2. Он в Spring 3.2
Ответ 6
Я не тестировал Spring MVC 3.1, совместимый с Jackson 2.0. Но я столкнулся с проблемой, совместимой с 3.0.5. Наконец, я нахожу Spring MVC 3.0.5 совместим только с Jackson 1.0.0, определенно Jackson 1.5.3 несовместим!!!