后端,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
?如果使用其他方法名称怎么配置呢?
看完该官方文档后,我知道如何自定义转换器。
@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()); } }