Джексон 2.0 с пружиной 3.1
Совместим ли Spring MVC 3.1 с Jackson 2.0? Будет ли по-прежнему работать автоматическое обнаружение Джексоном SpringpC пути к классам и делегирование Джексону запросов с типом содержимого JSON?
6 ответов
Поддержка Jackson 2 была добавлена в Spring 3.2, а также перенесена в Spring 3.1.2 ( SPR-9507)
Кит Дональд (из источника весны) написал в твиттере некоторое время назад.
Поддержка Spring MVC для Jackson 2; также работает с нативной функцией "Pretty Print" Джексона https://gist.github.com/2423129
Я не пробовал MappingJackson2HttpMessageConverter
найденный в сущности выше, но это удивило бы меня, если бы это не работало.
Начиная с Spring 3.1.2 вы просто должны добавить jar-файл базы данных jackson в ваш путь к классам.
В 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>
Остальная магия будет сделана весной автоматически.
Смотрите: http://norrisshelton.wordpress.com/2012/07/15/spring-3-mvc-with-json-via-jackson-2-0/
Для весны 3.1.2 и Джексона 2 -
Как указано выше, автоматическая поддержка JustWorks™
но конфигурация не, так как большая часть сети изобилует механизмами предварительной настройки Spring3/Jackson2
Так что для потомков я перечислю хак (? Или это официальный способ) для настройки конвертера Джексона. В этом конкретном случае я настраиваю конвертер для возврата дат в формате 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;
}
}
Чтобы быть понятным, Spring 3.1 не имеет встроенной поддержки Jackson 2. Это в Spring 3.2
Я не тестировал Spring MVC 3.1, совместимый с Jackson 2.0. Но я сталкиваюсь с 3.0.5 совместимой проблемой. Наконец, я обнаружил, что Spring MVC 3.0.5 совместим только с Jackson 1.0.0, определенно, Jackson 1.5.3 не совместим!!!