【发布时间】:2015-04-04 03:36:43
【问题描述】:
我正在使用 Spring Boot (1.2.1),其方式与他们的 Building a RESTful Web Service 教程中类似:
@RestController
public class EventController {
@RequestMapping("/events/all")
EventList events() {
return proxyService.getAllEvents();
}
}
以上,Spring MVC 隐式使用 Jackson 将我的 EventList 对象序列化为 JSON。
但我想对 JSON 格式做一些简单的自定义,例如:
setSerializationInclusion(JsonInclude.Include.NON_NULL)
问题是,自定义隐式 JSON 映射器的最简单方法是什么?
我尝试了 this blog post 中的方法,创建了一个 CustomObjectMapper 等等,但是第 3 步“在 Spring 上下文中注册类”失败了:
org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'jacksonFix': Injection of autowired dependencies failed;
nested exception is org.springframework.beans.factory.BeanCreationException:
Could not autowire method: public void com.acme.project.JacksonFix.setAnnotationMethodHandlerAdapter(org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter);
nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException:
No qualifying bean of type [org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter]
found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
看起来这些说明适用于旧版本的 Spring MVC,而我正在寻找一种简单的方法来让它与最新的 Spring Boot 一起工作。
【问题讨论】:
-
你插入了这个注解吗?:@SuppressWarnings({"SpringJavaAutowiringInspection"})
-
请注意,如果您也使用 Spring Web,则需要手动告诉它使用此 ObjectMapper,否则它将创建自己的实例,该实例不会被配置。见stackoverflow.com/questions/7854030/…
标签: java spring spring-mvc jackson spring-boot