上篇我们学习了《33-Spring MVC的REST控制器建言@RestControllerAdvice》,本篇我们学习@JsonView。
Spring MVC支持Jackson的@JsonView注解来定制请求体和返回体的json。这个功能的实现和上一节@RestControllerAdvice例子类似,是通过JsonViewRequestBodyAdvice,JsonViewResponseBodyAdvice来实现的。它们是自动添加到IoC容器,而不是通过@RestControllerAdvice注册的。
我们通过@JsonView在Person类中定义视图:
@Setter
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(exclude = {"name", "age"})
public class Person {
public interface WithoutIdView {}; //1
public interface WithIdView extends WithoutIdView {}; //1
@NotNull(message = "id不能为空")
private Long id;
@Size(min = 3, max = 5, message = "name在3到5个字符之间")
private String name;
@Min(value = 18, message = "age不能低于18岁")
private Integer age;
@JsonView(WithIdView.class) //2
public Long getId() {
return id;
}
@JsonView(WithoutIdView.class)//2
public String getName() {
return name;
}
@JsonView(WithoutIdView.class)//2
public Integer getAge() {
return age;
}
}
- 定义两个接口作为视图,WithIdView继承WithoutId视图;
- 定制两个视图对应需展示的属性。
我们在控制器中的检验:
@GetMapping("/jsonView")
@JsonView(Person.WithoutIdView.class) //使用无id视图
public Person jsonView(@RequestBody Person person){
return person;
}
本文暂时没有评论,来添加一个吧(●'◡'●)