之前有用到消息转换器,一直是配置configureMessageConverters()这个方法的,虽然知道也有extendMessageConverters()。它们的区别的是第一个不会继承框架默认的消息转换器,第二个是继承了的。也就是说使用第一种方法配置就只有方法里面自己配置的消息转换器,而是用第二种则除了自己配置的还有框架自带的。
坑就在这里,一直用的是configureMessageConverters()配置,但是之前写项目使用configureMessageConverters()配置,发现有问题,某些地方的时间不能从json转成正常的时间显示。后来百度到别人的一个配置用extendMessageConverters(),虽然解决了目前的这个问题,但后面又出了别的转换问题,使用configureMessageConverters()的时候是没事的——忘了是什么问题,尴尬。
最近才知道extendMessageConverters()有一个优先级的问题
@Override public void extendMessageConverters(List<HttpMessageConverter<?>> converters) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setDateFormat(sdf); MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(objectMapper); //通过设置索引,让自己的转换器放在最前面,否则默认的jackson转换器会在前面,用不上我们设置的转换器. converters.add(0, converter); }
原文:https://www.cnblogs.com/woyujiezhen/p/12105852.html