SpringMVC使用JsonView針對(duì)統(tǒng)一實(shí)體返回不同信息
一、隨便說(shuō)說(shuō)
項(xiàng)目中不同的接口需要返回不同的信息,而信息一般通過(guò)不同的對(duì)象實(shí)例去承載。例如有接口A和接口B,A需要返回不包含用戶地址的用戶信息,
而B需要返回包含用戶地址的用戶信息,其它信息和A的返回信息一致。
這個(gè)時(shí)候應(yīng)該建立兩個(gè)不同的用戶類,一個(gè)包含address,一個(gè)不包含,這樣做顯然是麻煩的,那么JsonView就可以幫你很優(yōu)雅的解決這個(gè)問(wèn)題。
接下來(lái)就直接開始擼代碼了。
二、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.在類中寫兩個(gè)內(nèi)部接口,分別標(biāo)志不同的返回屬性。接口是可以相互繼承的,例如AdminView繼承了CommonView,那么相當(dāng)于AdminView包含了commonView標(biāo)記的屬性。
CommonView --> username
AdminView |--> password
|--> CommonView --> username三、UserController的寫法
在需要返回不同視圖的方法上加上@JsonView注解,注解中的value屬性填寫我們?cè)赨serDTO中定義的代表不同標(biāo)記的接口類即可。
@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", "北京");
}
}訪問(wèn)localhost:8080/user/common返回
{
"username": "kingboy"
}訪問(wèn)lcoalhost:8080/user/admin返回
{
"username": "kingboy",
"address": "北京"
}以上就是SpringMVC使用JsonView針對(duì)統(tǒng)一實(shí)體返回不同信息的詳細(xì)內(nèi)容,更多關(guān)于SpringMVC JsonView統(tǒng)一實(shí)體不同信息返回的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JAVAEE中用Session簡(jiǎn)單實(shí)現(xiàn)購(gòu)物車功能示例代碼
本篇文章主要介紹了JAVAEE中用Session簡(jiǎn)單實(shí)現(xiàn)購(gòu)物車功能示例代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。2017-03-03
Java中List轉(zhuǎn)Map List實(shí)現(xiàn)的幾種姿勢(shì)
本文主要介紹了Java中List轉(zhuǎn)Map List實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
SpringBoot加入Guava Cache實(shí)現(xiàn)本地緩存代碼實(shí)例
這篇文章主要介紹了SpringBoot加入Guava Cache實(shí)現(xiàn)本地緩存代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
SpringBoot實(shí)現(xiàn)設(shè)置動(dòng)態(tài)定時(shí)任務(wù)的方法詳解
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)設(shè)置動(dòng)態(tài)定時(shí)任務(wù)的方法詳解,SpringBoot是一個(gè)快速開發(fā)的Java框架,而動(dòng)態(tài)定時(shí)任務(wù)是指可以在運(yùn)行時(shí)動(dòng)態(tài)添加、修改和刪除定時(shí)任務(wù)的功能,需要的朋友可以參考下2023-10-10
Spring Boot JPA Repository之existsBy查詢方法失效的解決
這篇文章主要介紹了Spring Boot JPA Repository之existsBy查詢方法失效的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
shiro實(shí)現(xiàn)單點(diǎn)登錄(一個(gè)用戶同一時(shí)刻只能在一個(gè)地方登錄)
這篇文章主要介紹了shiro實(shí)現(xiàn)單點(diǎn)登錄(一個(gè)用戶同一時(shí)刻只能在一個(gè)地方登錄)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧2016-08-08

