gpt4 book ai didi

java - 整个 Spring MVC Rest Controller 的 @JsonView 声明

转载 作者:行者123 更新时间:2023-12-01 11:09:54 30 4
gpt4 key购买 nike

有什么方法可以为整个 Spring MVC 休息 Controller 声明 @JsonView 吗?

我知道我可以为这样的特定方法声明@JsonView:

 @RequestMapping(value = "/user", method = RequestMethod.G
@JsonView(User.WithoutPasswordView.class)
public User getUser() {
return new User("eric", "7!jd#h23");
}

但我不想为每个方法定义 @JsonView 因为我的方法是在 super 类中定义的,我不想只是为了添加单个注释而覆盖它们。
我想为整个 Controller 声明 @JsonView ,如下所示:

@RestController
@RequestMapping(ZONES_PATH)
@JsonView(User.WithoutPasswordView.class)
public class ZoneResource extends GenericRestService<Zone> {
...

有什么办法可以实现这个目标吗?

最佳答案

创建将使用预定义 View 的自定义对象映射器

public class CustomObjectMapper extends ObjectMapper {

public CustomObjectMapper() {
super();
setSerializationConfig(getSerializationConfig()
.withView(User.WithoutPasswordView.class));
}
}

将其注册为spring使用的默认对象映射器

<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="objectMapper" ref="jacksonObjectMapper" />
</bean>
</mvc:message-converters>
</mvc:annotation-driven>

<bean id="jacksonObjectMapper" class="com.web.CustomObjectMapper" />

关于java - 整个 Spring MVC Rest Controller 的 @JsonView 声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32496780/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com