2016-04-28 2 views
1

Я пытаюсь настроить MappingJackson2HttpMessageConverter, потому что я хочу отключить функцию WRITE_DATES_TO_TIMESTAMP.Конфигурирование MappingJackson2HttpMessageConverter с помощью java-конфигурации

Если настроить его XML-конфигурации она успешно работает

<bean name="jacksonObjectMapper" 
    class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"> 
    <property name="featuresToDisable"> 
     <array> 
      <util:constant 
       static-field="com.fasterxml.jackson.databind.SerializationFeature.WRITE_DATES_AS_TIMESTAMPS" /> 
     </array> 
    </property> 
</bean> 
<mvc:annotation-driven> 
    <mvc:message-converters register-defaults="true"> 
     <bean 
      class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> 
      <property name="objectMapper" ref="jacksonObjectMapper" /> 
     </bean> 
    </mvc:message-converters> 
</mvc:annotation-driven> 

Но когда я пытаюсь настроить с помощью Java-конфигурации преобразователь зарегистрирован, но сериализации игнорирует конфигурацию преобразователя.

Я пробовал разные аплодисменты.

подход 1

@Configuration 
@EnableWebMvc 
public class WebConfig extends WebMvcConfigurerAdapter { 

@Override 
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { 
    ObjectMapper mapper = new ObjectMapper(); 
    mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); 
    converters.add(new MappingJackson2HttpMessageConverter(mapper)); 
} 
} 

подход 2

@Configuration 
@EnableWebMvc 
public class WebConfig extends WebMvcConfigurerAdapter { 

@Override 
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) { 
    for (HttpMessageConverter<?> converter : converters) { 
     if (converter instanceof MappingJackson2HttpMessageConverter) { 
     MappingJackson2HttpMessageConverter jacksonMessageConverter = (MappingJackson2HttpMessageConverter) converter; 
     ObjectMapper objectMapper = jacksonMessageConverter.getObjectMapper(); 
     objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); 
     break; 
     } 
    } 
} 

} 

ответ

3

Попробуйте ниже подход:

@Configuration 
@EnableWebMvc 
public class WebConfig extends WebMvcConfigurerAdapter { 

    ... 
    @Override 
    public void configureMessageConverters(
     List<HttpMessageConverter<?>> converters) { 
     Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder(); 
     builder.dateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm")); 
     builder.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); 
     converters.add(new MappingJackson2HttpMessageConverter(builder.build())); 
    } 
    ... 
} 
+1

Это не работает для меня :( – althor

0

Это также работает для меня

@Bean 
public Jackson2ObjectMapperBuilder jackson2ObjectMapperBuilder() { 
    Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder(); 
    builder.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); 
    return builder; 
} 
+0

Это не работает для меня ни – althor

0

Возможно, у вас все еще есть аннотация, управляемая в xml?

Которая также регистрирует сообщения по умолчаниюConverters и objectmappers.

Смежные вопросы