SpringMVC使用JsonView針對(duì)統(tǒng)一實(shí)體返回不同信息
一、隨便說說
項(xiàng)目中不同的接口需要返回不同的信息,而信息一般通過不同的對(duì)象實(shí)例去承載。例如有接口A和接口B,A需要返回不包含用戶地址的用戶信息,
而B需要返回包含用戶地址的用戶信息,其它信息和A的返回信息一致。
這個(gè)時(shí)候應(yīng)該建立兩個(gè)不同的用戶類,一個(gè)包含address,一個(gè)不包含,這樣做顯然是麻煩的,那么JsonView就可以幫你很優(yōu)雅的解決這個(gè)問題。
接下來就直接開始擼代碼了。
二、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", "北京");
}
}訪問localhost:8080/user/common返回
{
"username": "kingboy"
}訪問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)文章
Java編程實(shí)現(xiàn)服務(wù)器端支持?jǐn)帱c(diǎn)續(xù)傳的方法(可支持快車、迅雷)
這篇文章主要介紹了Java編程實(shí)現(xiàn)服務(wù)器端支持?jǐn)帱c(diǎn)續(xù)傳的方法,涉及Java文件傳輸?shù)南嚓P(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
java實(shí)現(xiàn)批量導(dǎo)入.csv文件到mysql數(shù)據(jù)庫
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)批量導(dǎo)入.csv文件到mysql數(shù)據(jù)庫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08
Java存儲(chǔ)過程調(diào)用CallableStatement的方法
這篇文章主要介紹了Java存儲(chǔ)過程調(diào)用CallableStatement的方法,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下2020-11-11
java實(shí)現(xiàn)人員信息管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)人員信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
Spring-webflux訪問關(guān)系型數(shù)據(jù)庫實(shí)戰(zhàn)
這篇文章主要為大家介紹了Spring-webflux訪問關(guān)系型數(shù)據(jù)庫實(shí)戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
輕量級(jí)聲明式的Http庫——Feign的獨(dú)立使用
這篇文章主要介紹了輕量級(jí)聲明式的Http庫——Feign的使用教程,幫助大家更好的理解和學(xué)習(xí)使用feign,感興趣的朋友可以了解下2021-04-04

