前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >springboot重写configureMessageConverters为什么没有效果

springboot重写configureMessageConverters为什么没有效果

作者头像
johnhuster的分享
发布2022-03-28 19:56:02
发布2022-03-28 19:56:02
1.1K00
代码可运行
举报
文章被收录于专栏:johnhusterjohnhuster
运行总次数:0
代码可运行

springboot与普通springmvc项目的不同在于springboot有自己的默认的springmvc配置,比如WebMvcAutoConfigurationAdapter等,下面看下相关部分核心代码:

WebMvcConfigurationSupport类的

代码语言:javascript
代码运行次数:0
复制
    protected final void addDefaultHttpMessageConverters(List<HttpMessageConverter<?>> messageConverters) {
         StringHttpMessageConverter stringConverter = new StringHttpMessageConverter();
         stringConverter.setWriteAcceptCharset(false);
        messageConverters.add(new ByteArrayHttpMessageConverter());
         messageConverters.add(stringConverter);
         messageConverters.add(new ResourceHttpMessageConverter());
         messageConverters.add(new SourceHttpMessageConverter<Source>());
         messageConverters.add(new AllEncompassingFormHttpMessageConverter());
        if (romePresent) {
             messageConverters.add(new AtomFeedHttpMessageConverter());
             messageConverters.add(new RssChannelHttpMessageConverter());
         }
        if (jackson2XmlPresent) {
             messageConverters.add(new MappingJackson2XmlHttpMessageConverter(
                     Jackson2ObjectMapperBuilder.xml().applicationContext(this.applicationContext).build()));
         }
         else if (jaxb2Present) {
             messageConverters.add(new Jaxb2RootElementHttpMessageConverter());
         }
        if (jackson2Present) {
             messageConverters.add(new MappingJackson2HttpMessageConverter(
                     Jackson2ObjectMapperBuilder.json().applicationContext(this.applicationContext).build()));
         }
         else if (gsonPresent) {
             messageConverters.add(new GsonHttpMessageConverter());
         }
     }

springboot默认的mvc配置会调用WebMvcConfigurationSupport的addDefaultHttpMessageConverters方法,通过上面的代码我们可以看出springboot默认mvc配置会添加上面的默认HttpMessageConverter,所以我们在springboot项目中通过configureMessageConverters是无法直接覆盖掉所有的HttpMessageConverters,要想屏蔽springboot默认的mvc配置可以进行以下操作:

在这个configration类上面增加@EnableWebMvc注解,这样就会屏蔽掉springboot默认的mvc配置,但是不推荐,这样就会屏蔽掉其他的默认配置,比如ExceptionHandlerExceptionResolver等

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/04/11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档