2016-04-28 385 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驱动?

其中还注册了默认的messageConverters和objectmappers。