SpringMVC使用JsonView針對統(tǒng)一實體返回不同信息
一、隨便說說
項目中不同的接口需要返回不同的信息,而信息一般通過不同的對象實例去承載。例如有接口A和接口B,A需要返回不包含用戶地址的用戶信息,
而B需要返回包含用戶地址的用戶信息,其它信息和A的返回信息一致。
這個時候應該建立兩個不同的用戶類,一個包含address,一個不包含,這樣做顯然是麻煩的,那么JsonView就可以幫你很優(yōu)雅的解決這個問題。
接下來就直接開始擼代碼了。
二、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針對統(tǒng)一實體返回不同信息的詳細內容,更多關于SpringMVC JsonView統(tǒng)一實體不同信息返回的資料請關注腳本之家其它相關文章!
相關文章
Java編程實現(xiàn)服務器端支持斷點續(xù)傳的方法(可支持快車、迅雷)
這篇文章主要介紹了Java編程實現(xiàn)服務器端支持斷點續(xù)傳的方法,涉及Java文件傳輸?shù)南嚓P技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11java實現(xiàn)批量導入.csv文件到mysql數(shù)據(jù)庫
這篇文章主要為大家詳細介紹了java實現(xiàn)批量導入.csv文件到mysql數(shù)據(jù)庫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-08-08Java存儲過程調用CallableStatement的方法
這篇文章主要介紹了Java存儲過程調用CallableStatement的方法,幫助大家更好的理解和學習Java,感興趣的朋友可以了解下2020-11-11Spring-webflux訪問關系型數(shù)據(jù)庫實戰(zhàn)
這篇文章主要為大家介紹了Spring-webflux訪問關系型數(shù)據(jù)庫實戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07