最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

spring通過filter,Interceptor統(tǒng)一處理ResponseBody的返回值操作

 更新時間:2020年09月15日 09:34:30   作者:touzizhuo03  
這篇文章主要介紹了spring通過filter,Interceptor統(tǒng)一處理ResponseBody的返回值操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

項目中有一個需求,需要統(tǒng)一處理一下@ResponseBody注解的返回值(比如打印),在網(wǎng)上找了一下,有建議用AOP來做的,但是個人認(rèn)為項目中用多個AOP并不優(yōu)雅;通過google,找到了spring的ResponseBodyAdvice接口,用來對返回體做統(tǒng)一處理。

例如:統(tǒng)一打印返回體中的內(nèi)容

@ControllerAdvice(basePackages = "cc.openwiki.controller.biz")
public class LogResponseAdvice implements ResponseBodyAdvice<Object> {
 @Override
 public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
  return true;
 }
 
 @Override
 public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType,Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
  log.info("返回值為:{}", JSON.toJSONString(body));
  return body;
 }

補(bǔ)充知識:Spring mvc中統(tǒng)一對ResponseBody進(jìn)行封裝

在一個前后端分離的項目中,需要對后端RestController里返回的ResponseBody進(jìn)行統(tǒng)一的封裝,讓所有的API結(jié)果的都是json對象,帶有是否成功的標(biāo)志位,并且將實際的數(shù)據(jù)放到j(luò)son的result字段中,例如:

{"result":["age","height"],"success":true}

如果在每個RestController中進(jìn)行封裝,重復(fù)的工作很多,因此需要自動封裝,比如已經(jīng)寫好了如下Controller

@RestController()
@RequestMapping("bar")
public class BarController {
 
 @GetMapping("foo")
 public List<String> getSessionColumns() {
  List<String> result = new ArrayList<>();
  result.add("age");
  result.add("height");
  return result;
 }
}

自動將結(jié)果封裝為

{"result":["age","height"],"success":true}

一開始試驗了AOP,但是發(fā)現(xiàn)總是有ClassCastException的問題,后來又找到了ResponseBodyAdvice,才解決這個問題

public class NovaResponseBodyAdvice implements ResponseBodyAdvice { 
 @Override
 public boolean supports(MethodParameter returnType, Class converterType) {
  return true;
 }
 
 @Override
 public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType,
         Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
  Map<String, Object> result = new HashMap<>();
  result.put("result", body);
  result.put("success", true);
  return result;
 } 
}

以上這篇spring通過filter,Interceptor統(tǒng)一處理ResponseBody的返回值操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Springboot 使用 maven-resources-plugin 打包變量替換jar沒有打包進(jìn)去、Jar包沒有被使用的解決方法

    Springboot 使用 maven-resources-plugin 打包變量替換ja

    這篇文章主要介紹了Springboot 使用 maven-resources-plugin 打包變量替換jar沒有打包進(jìn)去、Jar包沒有被使用的解決方法,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2024-08-08
  • 解決mybatis-plus自定義xml的坑

    解決mybatis-plus自定義xml的坑

    這篇文章主要介紹了解決mybatis-plus自定義xml的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java中ResultSetMetaData 元數(shù)據(jù)的具體使用

    Java中ResultSetMetaData 元數(shù)據(jù)的具體使用

    本文主要介紹了Java中ResultSetMetaData 元數(shù)據(jù)的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • @RequestParam 接收參數(shù)的值為null的處理方式

    @RequestParam 接收參數(shù)的值為null的處理方式

    這篇文章主要介紹了@RequestParam 接收參數(shù)的值為null的處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • IDEA快速搭建spring?boot項目教程(Spring?initializr)

    IDEA快速搭建spring?boot項目教程(Spring?initializr)

    這篇文章主要介紹了IDEA快速搭建spring?boot項目教程(Spring?initializr),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • springboot + swagger 實例代碼

    springboot + swagger 實例代碼

    本篇文章主要介紹了springboot + swagger 實例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Java快速入門掌握類與對象及變量的使用

    Java快速入門掌握類與對象及變量的使用

    類和對象是兩種以計算機(jī)為載體的計算機(jī)語言的合稱。對象是對客觀事物的抽象,類是對對象的抽象。類是一種抽象的數(shù)據(jù)類型;變量就是可以變化的量,存儲在內(nèi)存中—個可以擁有在某個范圍內(nèi)的可變存儲區(qū)域
    2022-04-04
  • spring @Scheduled定時任務(wù)注解使用方法及注意事項小結(jié)

    spring @Scheduled定時任務(wù)注解使用方法及注意事項小結(jié)

    Spring的@Scheduled注解用于定時任務(wù)調(diào)度,默認(rèn)單線程依次執(zhí)行,可以通過配置多線程調(diào)度器或使用@Async注解實現(xiàn)并行執(zhí)行,常見參數(shù)包括cron、fixedRate、fixedDelay、initialDelay等,本文介紹spring @Scheduled定時任務(wù)注解使用方法,感興趣的朋友一起看看吧
    2025-02-02
  • Java程序員必備的11大IntelliJ插件(附地址)

    Java程序員必備的11大IntelliJ插件(附地址)

    這篇文章主要介紹了Java程序員必備的11大IntelliJ插件(附地址),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Java中finally關(guān)鍵字對返回值的影響詳解

    Java中finally關(guān)鍵字對返回值的影響詳解

    這篇文章主要介紹了Java中finally關(guān)鍵字對返回值的影響詳解,執(zhí)行完try catch里面內(nèi)容準(zhǔn)備return時,如果還有finally需要執(zhí)行這是編譯器會為我們增加一個全局變量去暫存return 的值,等到finally執(zhí)行完成去return這個全局變量,需要的朋友可以參考下
    2024-01-01

最新評論

竹溪县| 尚志市| 陆河县| 驻马店市| 来凤县| 灵宝市| 彭阳县| 上高县| 左权县| 乐清市| 松溪县| 九台市| 丰镇市| 安多县| 伽师县| 黔西县| 革吉县| 蒙自县| 射洪县| 肥西县| 蒲江县| 灵璧县| 长子县| 长葛市| 明水县| 灵台县| 沽源县| 景泰县| 定安县| 错那县| 新余市| 千阳县| 湖北省| 油尖旺区| 荃湾区| 怀来县| 砀山县| 邹平县| 秭归县| 马尔康县| 鹤庆县|