后端,Spring boot项目(v1.3.0.发布),向前端提供Rest JSON Api,刚才遇到错误:
Infinite recursion (StackOverflowError)
我决定改变习惯FastJsonHttpMessageConverter https://github.com/alibaba/fastjson/blob/master/src/main/java/com/alibaba/fastjson/support/spring/FastJsonHttpMessageConverter.java,代码如下
@Bean
public HttpMessageConverter httpMessageConverter() {
FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
return fastJsonHttpMessageConverter;
}
但它不起作用,实际上它使用默认值HttpMessageConverter
。虽然没有出现上述错误,但输出并不符合我的预期。例如
suppliers: [
{
$ref: "$.value"
}
]
现在更改上面的代码
@Bean
public HttpMessageConverter mappingJackson2HttpMessageConverter() {
FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
return fastJsonHttpMessageConverter;
}
这次可以了,我想知道为什么方法名称必须是mappingJackson2HttpMessageConverter
?如果使用其他方法名称如何配置?
看到这个之后官方文件 http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-developing-web-applications.html#boot-features-spring-mvc-message-converters,我知道如何定制转换器。
@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<HttpMessageConverter<?>> converters) {
super.configureMessageConverters(converters);
converters.add(new FastJsonHttpMessageConverter());
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)