java - 使用 java-configuration 配置 MappingJackson2HttpMessageConverter

标签 java spring spring-mvc jackson converter

我正在尝试配置 MappingJackson2HttpMessageConverter,因为我想禁用 WRITE_DATES_TO_TIMESTAMP 功能。

如果我通过 xml-configuration 配置它,它会成功运行

<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-configuration 进行配置时,转换器已注册但序列化忽略了映射器的配置。

我尝试了不同的方法。

方法一
@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));
}
}

方法二
@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;
        }
    }
}

}

最佳答案

尝试以下方法:

@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()));
    }
    ...
}

关于java - 使用 java-configuration 配置 MappingJackson2HttpMessageConverter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36906877/

相关文章:

java - Android:带有进度对话框的繁重数据库操作

java - 为什么我的代码不能多次随机生成?

java - 具有自动重新连接功能的 JDBC 连接

java - spring junit默认会回滚吗?

Java:无法在 Spring MVC 中解析带有名称的 View

java - Spring MVC - POJO 中名称中带有连字符的查询参数

java - Dijkstra 算法 Java 添加邻接关系

java - 我们有专门针对 Spring 5.x 的 XSD 吗?

spring - JavaEE 有控制反转吗?

java - 如何在spring mvc中使 session 无效以实现注销功能