Где указать параметры настройки Jackson SerializationConfig.Feature в Spring 3.1

Я озадачен тем, почему использование стандартного включения jackson в том, что Spring, похоже, настроил конфигурацию Джексона по умолчанию.

Одна настройка, с которой он взаимодействует, составляет WRITE_DATES_AS_TIMESTAMPS, Джексон по умолчанию - true, однако Spring где-то изменил это на false, а также предоставил формат даты.

Где в мире это происходит? Я хочу, чтобы мои даты были сериализованы как числа.

ОБНОВЛЕНИЕ. Оказывается, это не проблема Spring, вызывающая эту проблему, а фактически спящий класс прокси-класса вызывает проблему. По какой-то причине, если hibernate имеет тип-отображение type="date", он сериализуется как строка даты, хотя если его type="timestamp" он сериализуется, как ожидалось. Вместо того, чтобы тратить слишком много времени на это, я решил просто изменить все мои сопоставления на метку времени.

Ответ 1

Начиная с 3.1 M1 вы можете указать настраиваемую конфигурацию Jackson, зарегистрировав HttpMessageConverters через подэлемент mvc:annotation-driven.

См. Spring 3.1 Улучшения в пространстве имен MVC

См. SPR-7504 Упростите добавление новых Message Converters в AnnotationMethodHandlerAdapter

Exemple:

<bean id="jacksonObjectMapper" class="x.y.z.CustomObjectMapper">                
</bean>

<mvc:annotation-driven>
    <mvc:message-converters>
       <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
           <property name="objectMapper" ref="jacksonObjectMapper" />
       </bean>
       </mvc:message-converters>
</mvc:annotation-driven>

Объект CustomObjectMapper

    @Component("jacksonObjectMapper")
    public class CustomObjectMapper extends ObjectMapper {

        @PostConstruct
        public void afterPropertiesSet() throws Exception {

            SerializationConfig serialConfig = getSerializationConfig()     
                        .withDateFormat(null);

                  //any other configuration

            this.setSerializationConfig(serialConfig);
        }
    }

SerializationConfig.withDateFormat

В дополнение к созданию экземпляра с указанным форматом даты включите или отключите Feature.WRITE_DATES_AS_TIMESTAMPS (включить, если формат установлен как null, отключить, если не null)