【问题标题】:Spring 4 ,the custom messageConverter don`t workSpring 4,自定义 messageConverter 不起作用
【发布时间】:2017-11-22 08:01:44
【问题描述】:

我想使用@RestController注解和jackson2,但是响应JSON(包括java.util.Date)总是返回Timestamp;我做了以下事情,但是它不起作用......

<mvc:annotation-driven>
    <mvc:message-converters register-defaults="true">
        <bean id="customJsonMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            <property name="objectMapper" ref="customObjectMapper"/>
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>



public class CustomObjectMapper extends ObjectMapper{


public CustomObjectMapper(){
    this.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    this.setDateFormat(df);
}

}

@RestController
@RequestMapping(value = "/reports")
public class ReportController extends...

调试并发现只有默认的 5 个 MessageConverters... the screenshoot

【问题讨论】:

  • MappingJackson2HttpMessageConverter 注册为第四个 MessageConverter。检查它是否按预期引用了您的 CustomObjectMapper。
  • No..我检查了。dateformat配置是默认值。 But the CustomObjectMappers constructor have been called during the initialization,所以我想可能是我使用了不止一个 InitializingBean ,它涵盖了原始配置或其他原因............我只是不知道!跨度>

标签: java spring jackson2


【解决方案1】:

这就是你可以使用注解的方式

@Configuration
public class JacksonConfiguration extends WebMvcConfigurerAdapter {

    private final CustomObjectMapper mapper;

    @Autowired
    public JacksonConfiguration(CustomObjectMapper mapper) {
        this.mapper = mapper;
    }

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

【讨论】:

  • 我已经添加了带有 XML 配置的 customObjectMapper。
猜你喜欢
  • 2019-12-27
  • 2015-12-06
  • 1970-01-01
  • 1970-01-01
  • 2017-01-09
  • 2015-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多