如何为 spring-data-rest 和我的@RestController class 编写单个 objectMapper

How to write single objectMapper for spring-data-rest and to my @RestController class

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

注册的

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

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

如何实现?

我也在我的实体 class 上尝试使用 @JsonSerialize。但是我无法使用 BeanSerializerBase

unWrappingBeanSerializer 创建 bean

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

可见

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