如何为spring-data-rest和@RestController类编写单个objectMapper

时间:2016-11-04 13:29:27

标签: serialization spring-boot spring-data-rest jackson2

我为我的实体写了一个UnwrappingBeanSerializer。目前,此序列化程序已使用ConfigureJacksonObjectMapper

注册

此序列化程序适用于从spring-data-rest生成的REST API。但我对同一个实体有一个自定义@RestController,但它不知道在spring-data-rest配置中注册的序列化程序。

我想在spring-data-rest API和我的自定义控制器中使用UnwrappingBeanSerializer序列化我的响应。

如何实现这一目标?

我还在我的实体类上尝试了@JsonSerialize。但是我无法使用unWrappingBeanSerializer

BeanSerializerBase创建bean

1 个答案:

答案 0 :(得分:1)

常规@RestControllerSpring Data REST控制器具有不同的流和配置。如果您使用的是Spring Data REST,则最好将@RepositoryRestController用于同一资源的自定义端点,这将使用相同的Spring Data REST链及其配置,就像您在{中使用的那个{3}},否则ObjectMapper仅对Spring Data REST可见。

如果你想拥有@RestController并为两者使用相同的ObjectMapper,你需要有两个配置:一个用于Spring Data REST(就像你已经拥有的那样)而另一个用于常规控制器,所以只需在Spring上下文中注册它(例如,如果您使用的是Spring MVC,请参阅ConfigureJacksonObjectMapper)。