代码之家  ›  专栏  ›  技术社区  ›  Michel Néron

当我们进入bean时,Springboot WebMVCConfigurationSupport没有采用configureMessageConverters

  •  0
  • Michel Néron  · 技术社区  · 5 年前

    WebMvcConfigurationSupport 我们重写方法的子类 configureMessageConverters .

    当我们得到一个像豆子一样的转换器时,

    @Bean
    public HttpMessageConverter mappingJackson2HttpMessageConverter(){
        MappingJackson2HttpMessageConverter jacksonConverter =
                new MappingJackson2HttpMessageConverter(new EventServiceObjectMapper());
    
        return jacksonConverter;
    }
    
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(new Jaxb2RootElementHttpMessageConverter());
        converters.add(mappingJackson2HttpMessageConverter());
    }
    

    这个 configuration-loader 没有带转换器。

    但是当我们在方法中声明全部时, 配置加载程序 带上转换器。

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

    正常吗?我错过了什么?

    依赖关系:

    Spring WebMVC 4.3.22.发布

    SpringBoot 1.5.19.释放

    1 回复  |  直到 5 年前
        1
  •  0
  •   Michel Néron    5 年前

    我找到了一个解决办法。扩展WebMVCConfigureAdapter,并实现ExtendMessageConverter,清除转换器并仅设置所需的转换器。

    @Bean
    public HttpMessageConverter mappingJackson2HttpMessageConverter(){
        MappingJackson2HttpMessageConverter jacksonConverter =
                new MappingJackson2HttpMessageConverter(new EventServiceObjectMapper());
    
        return jacksonConverter;
    }
    
    @Override
    public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.clear();
        converters.add(new Jaxb2RootElementHttpMessageConverter());
        converters.add(mappingJackson2HttpMessageConverter());
    }