zoukankan      html  css  js  c++  java
  • 关于springmvc的消息转换器

    之前有用到消息转换器,一直是配置configureMessageConverters()这个方法的,虽然知道也有extendMessageConverters()。它们的区别的是第一个不会继承框架默认的消息转换器,第二个是继承了的。也就是说使用第一种方法配置就只有方法里面自己配置的消息转换器,而是用第二种则除了自己配置的还有框架自带的。

    坑就在这里,一直用的是configureMessageConverters()配置,但是之前写项目使用configureMessageConverters()配置,发现有问题——图片显示不出来,不配置消息转换器,图片是有的,但是日期是json,配置后,日期是有了,图片不见了(代码debug没有报错)。后来百度到别人的一个配置用extendMessageConverters(),虽然解决了目前的这个问题,但后面又出了别的转换问题——忘了是什么问题,尴尬。

    知道现在知道了extendMessageConverters()其实是有优先级问题的,它原本有自带的jackson转换器,如果要用自己的话就得把自己的转换器在它之前调用,设置优先级是数字越小优先级越高。(其实我没具体试过数字,但应该是这样的)

    我们先看两段代码:

        @Override
        public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            ObjectMapper objectMapper = new ObjectMapper();
            objectMapper.setDateFormat(sdf);
            MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(objectMapper);
            converters.add(converter);
    
        // 即使下方这段代码删了,后面截图的图片的结果还是一样的,这里主要是为了不让以为是UTF-8造成图片显示不出来 StringHttpMessageConverter stringHttpMessageConverter
    = new StringHttpMessageConverter(Charset.forName("UTF-8")); stringHttpMessageConverter.setWriteAcceptCharset(false); converters.add(stringHttpMessageConverter); }
    @Override
        public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            ObjectMapper objectMapper = new ObjectMapper();
            objectMapper.setDateFormat(sdf);
            MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(objectMapper);
            //通过设置索引,让自己的转换器放在最前面,否则默认的jackson转换器会在前面,用不上我们设置的转换器.
            converters.add(0, converter);
        }

    然后再看两端代码相对应的浏览器

    可以看到两个相应头的content-type是不一样的,一个是text/html,一个是image/png。

    最后再试着把extendMessageConverters()的优先级删除,结果是图片正常显示,json日期转换失败

    还是从1770开始的ms数。

  • 相关阅读:
    js下载doxc 文件示例和部分后缀对应的content-type 总结
    使用react-app-rewired和customize-cra对默认webpack自定义配置
    koa2使用es7 的装饰器decorator
    vue history 模式打包部署在域名的二级目录的配置指南
    linux 安装 node 环境
    javascript 正则表达式之分组与前瞻匹配详解
    vue的$emit 与$on父子组件与兄弟组件的之间通信
    mysql 的基本操作总结--增删改查
    mysql 常用的时间日期函数小结
    小程序封装request请求,统一API
  • 原文地址:https://www.cnblogs.com/woyujiezhen/p/12105852.html
Copyright © 2011-2022 走看看