当前位置:  开发笔记 > 后端 > 正文

Spring Boot如何自定义HttpMessageConverter

如何解决《SpringBoot如何自定义HttpMessageConverter》经验,为你挑选了1个好方法。

后端,Spring启动项目(v1.3.0.RELEASE),将Rest JSON Api提供给前端,刚才遇到一个错误:

Infinite recursion (StackOverflowError)

我决定更改为自定义FastJsonHttpMessageConverter,代码如下

@Bean
public HttpMessageConverter httpMessageConverter() {
    FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();

    return fastJsonHttpMessageConverter;
}

但它不起作用,实际上它使用default HttpMessageConverter。尽管没有上述错误,但输出却不符合我的预期。例如

suppliers: [
    {
        $ref: "$.value"
    }
]

现在更改上面的代码

@Bean
public HttpMessageConverter mappingJackson2HttpMessageConverter() {
    FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
    return fastJsonHttpMessageConverter;
}

这次有效了,我想知道为什么方法名必须是mappingJackson2HttpMessageConverter?如果使用其他方法名称怎么配置呢?



1> zhuguowei..:

看完该官方文档后,我知道如何自定义转换器。

@Bean
public HttpMessageConverters customConverters() {
    HttpMessageConverter additional = new FastJsonHttpMessageConverter();
    return new HttpMessageConverters(additional);
}

修改我的主要帖子,实际上下面的代码不起作用。

@Bean
public HttpMessageConverter mappingJackson2HttpMessageConverter() {
    FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
    return fastJsonHttpMessageConverter;
}

如果您在其中设置了断点,则Spring Boot永远不会输入此方法。

下面的代码也适用。

@SpringBootApplication
public class FooApplication extends WebMvcConfigurerAdapter {


   public static void main(String[] args) {
       SpringApplication.run(FooApplication.class, args);
  }

  @Override
  public void configureMessageConverters(List> converters) {
    super.configureMessageConverters(converters);
    converters.add(new FastJsonHttpMessageConverter());
  }

}

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有