SpringMVC使用JsonView针对统一实体返回不同信息
一、随便说说
项目中不同的接口需要返回不同的信息,而信息一般通过不同的对象实例去承载。例如有接口A和接口B,A需要返回不包含用户地址的用户信息,
而B需要返回包含用户地址的用户信息,其它信息和A的返回信息一致。
这个时候应该建立两个不同的用户类,一个包含address,一个不包含,这样做显然是麻烦的,那么JsonView就可以帮你很优雅的解决这个问题。
接下来就直接开始撸代码了。
二、User信息载体类
public class UserDTO {
//不显示地址
public interface CommonView {}
//显示地址
public interface AdminView extends commonView {}
@JsonView(value = CommonView.class)
private String username;
@JsonView(value = AdminView.class )
private String address;
//Getter Setter ...
}1.接口是public的
2.在类中写两个内部接口,分别标志不同的返回属性。接口是可以相互继承的,例如AdminView继承了CommonView,那么相当于AdminView包含了commonView标记的属性。
CommonView --> username
AdminView |--> password
|--> CommonView --> username三、UserController的写法
在需要返回不同视图的方法上加上@JsonView注解,注解中的value属性填写我们在UserDTO中定义的代表不同标记的接口类即可。
@RestController
@RequestMapping(value = "/user")
public class UserController {
/**
* 返回普通视图,不带地址
* @return
*/
@GetMapping(value = "/common")
@JsonView(value = UserDTO.CommonView.class)
public UserDTO getCommonView() {
return new UserDTO("kingboy", "北京");
}
/**
* 返回管理员视图,显示地址
* @return
*/
@GetMapping(value = "/admin")
@JsonView(value = UserDTO.AdminView.class)
public UserDTO getAdminView() {
return new UserDTO("kingboy", "北京");
}
}访问localhost:8080/user/common返回
{
"username": "kingboy"
}访问lcoalhost:8080/user/admin返回
{
"username": "kingboy",
"address": "北京"
}以上就是SpringMVC使用JsonView针对统一实体返回不同信息的详细内容,更多关于SpringMVC JsonView统一实体不同信息返回的资料请关注脚本之家其它相关文章!
相关文章
SpringBoot加入Guava Cache实现本地缓存代码实例
这篇文章主要介绍了SpringBoot加入Guava Cache实现本地缓存代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2019-09-09
Spring Boot JPA Repository之existsBy查询方法失效的解决
这篇文章主要介绍了Spring Boot JPA Repository之existsBy查询方法失效的解决方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-06-06
shiro实现单点登录(一个用户同一时刻只能在一个地方登录)
这篇文章主要介绍了shiro实现单点登录(一个用户同一时刻只能在一个地方登录)的相关资料,非常不错,具有参考借鉴价值,感兴趣的朋友一起学习吧2016-08-08


最新评论