SpringMVC使用JsonView针对统一实体返回不同信息

 更新时间:2022年03月23日 14:18:19   作者:KimZing  
这篇文章主要为大家介绍了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统一实体不同信息返回的资料请关注脚本之家其它相关文章!

相关文章

  • JAVAEE中用Session简单实现购物车功能示例代码

    JAVAEE中用Session简单实现购物车功能示例代码

    本篇文章主要介绍了JAVAEE中用Session简单实现购物车功能示例代码,非常具有实用价值,需要的朋友可以参考下。
    2017-03-03
  • SpringMVC的Dispatcher解读

    SpringMVC的Dispatcher解读

    这篇文章主要介绍了SpringMVC的Dispatcher用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Java中List转Map List实现的几种姿势

    Java中List转Map List实现的几种姿势

    本文主要介绍了Java中List转Map List实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • SpringBoot加入Guava Cache实现本地缓存代码实例

    SpringBoot加入Guava Cache实现本地缓存代码实例

    这篇文章主要介绍了SpringBoot加入Guava Cache实现本地缓存代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • 入门Java线程基础一篇就够了

    入门Java线程基础一篇就够了

    线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源
    2021-06-06
  • SpringBoot实现设置动态定时任务的方法详解

    SpringBoot实现设置动态定时任务的方法详解

    这篇文章主要介绍了SpringBoot实现设置动态定时任务的方法详解,SpringBoot是一个快速开发的Java框架,而动态定时任务是指可以在运行时动态添加、修改和删除定时任务的功能,需要的朋友可以参考下
    2023-10-10
  • Java文件与Base64之间的转化方式

    Java文件与Base64之间的转化方式

    这篇文章介绍了如何使用Java将文件(如图片、视频)转换为Base64编码,以及如何将Base64编码转换回文件,通过提供具体的工具类实现,作者希望帮助读者更好地理解和应用这一过程
    2025-02-02
  • Spring Boot JPA Repository之existsBy查询方法失效的解决

    Spring Boot JPA Repository之existsBy查询方法失效的解决

    这篇文章主要介绍了Spring Boot JPA Repository之existsBy查询方法失效的解决方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • shiro实现单点登录(一个用户同一时刻只能在一个地方登录)

    shiro实现单点登录(一个用户同一时刻只能在一个地方登录)

    这篇文章主要介绍了shiro实现单点登录(一个用户同一时刻只能在一个地方登录)的相关资料,非常不错,具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-08-08
  • Java JVM编译策略案例详解

    Java JVM编译策略案例详解

    这篇文章主要介绍了Java JVM编译策略案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08

最新评论