实体类:准备返回的对象,其中使用接口来作为返回视图,UserSimpleInfo
在返回时只显示username
这个字段,UserDetailInfo
继承来UserSimpleInfo
,那么在返回的时候也会返回UserSimpleInfo
中显示的字段
@Data
public class User {
public interface UserSimpleInfo{}
public interface UserDetailInfo extends UserSimpleInfo{}
@JsonView(UserSimpleInfo.class)
private String username;
@JsonView(UserDetailInfo.class)
private String password;
@JsonView(UserDetailInfo.class)
private int age;
@JsonView(UserDetailInfo.class)
private String address;
}
普通的SpringBoot工程
@SpringBootApplication
@RestController
public class WebApplication {
public static void main(String[] args){
SpringApplication.run(WebApplication.class);
}
@GetMapping("/userInfo")
@JsonView(User.UserDetailInfo.class)
public User helloSecurity(){
User user = new User();
user.setUsername("xiaowang");
user.setPassword("11111111");
return user;
}
@GetMapping("/userDetail")
@JsonView(User.UserDetailInfo.class)
public User helloSecurity(){
User user = new User();
user.setUsername("xiaowang");
user.setPassword("11111111");
return user;
}
}
分别请求/userInfo
和/userDetail
//userDetail的请求
{"username":"xiaowang","password":"11111111","age":0,"address":null}
//userInfo的请求
{"username":"xiaowang"l}
感觉还是挺好用的,就是需要在每个实体类的字段上加上相依的注解比较麻烦