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

Spring?AOP實(shí)現(xiàn)打印HTTP接口出入?yún)⑷罩?/h1>
 更新時(shí)間:2022年09月26日 17:03:17   作者:IT小村  
這篇文章主要為大家詳細(xì)介紹了Spring?AOP如何實(shí)現(xiàn)打印HTTP接口出入?yún)⑷罩竟δ?,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

前言

最近在維護(hù)一個(gè)運(yùn)營(yíng)端的系統(tǒng),和前端聯(lián)調(diào)的過(guò)程中,經(jīng)常需要排查一些交互上的問(wèn)題,每次都得看前端代碼的傳參和后端代碼的出參,于是打算給HTTP接口加上出入?yún)⑷罩尽?/p>

但看著目前的HTTP接口有點(diǎn)多,那么有什么快捷的方式呢?答案就是實(shí)用Spring的AOP功能,簡(jiǎn)單實(shí)用。

思路

定義個(gè)一個(gè)SpringAOP的配置類(lèi),里邊獲取請(qǐng)求的URL、請(qǐng)求的入?yún)?、相?yīng)的出參,通過(guò)日志打印出來(lái)。

SpringBoot的aop依賴(lài):

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

示例

1.編寫(xiě)一個(gè)HTTP接口

定義了一個(gè)Controller,里邊就一個(gè)方法,方法請(qǐng)求類(lèi)型是get,出入?yún)⒍际呛?jiǎn)單的一個(gè)字符串字段。

package com.example.springbootaoplog.controller;


import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author hongcunlin
 */
@RestController
@RequestMapping("/index")
public class IndexController {

    @GetMapping("/indexContent")
    public String indexContent(String param) {
        return "test";
    }
}

2.編寫(xiě)一個(gè)AOP日志配置

這算是本文的重點(diǎn)了,定義一個(gè)AOP的內(nèi)容,首先是切點(diǎn),再者是請(qǐng)求前日志打印,最后請(qǐng)求后日志打印

package com.example.springbootaoplog.config;

import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

/**
 * aop日志打印配置
 *
 * @author hongcunlin
 */
@Slf4j
@Aspect
@Component
public class AopLogConfig {
    /**
     * 切點(diǎn)路徑:Controller層的所有方法
     */
    @Pointcut("execution(public * com.example.springbootaoplog.controller.*.*(..))")
    public void methodPath() {
    }

    /**
     * 入?yún)?
     *
     * @param joinPoint 切點(diǎn)
     */
    @Before(value = "methodPath()")
    public void before(JoinPoint joinPoint) {
        ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        String url = requestAttributes.getRequest().getRequestURL().toString();
        log.info("請(qǐng)求 = {}, 入?yún)?= {}", url, JSON.toJSONString(joinPoint.getArgs()));
    }

    /**
     * 出參
     *
     * @param res 返回
     */
    @AfterReturning(returning = "res", pointcut = "methodPath()")
    public void after(Object res) {
        ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        String url = requestAttributes.getRequest().getRequestURL().toString();
        log.info("請(qǐng)求 = {}, 入?yún)?= {}", url, JSON.toJSONString(res));
    }
}

3.結(jié)果測(cè)試

我們通過(guò)瀏覽器的URL,針對(duì)我們編寫(xiě)的http接口,發(fā)起一次get請(qǐng)求:

可以看到,日志里邊打印了我們預(yù)期的請(qǐng)求的URL和出入?yún)⒘耍?/p>

說(shuō)明我們的程序是正確的了。

到此這篇關(guān)于Spring AOP實(shí)現(xiàn)打印HTTP接口出入?yún)⑷罩镜奈恼戮徒榻B到這了,更多相關(guān)Spring AOP打印日志內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springboot3環(huán)境隔離的實(shí)現(xiàn)

    springboot3環(huán)境隔離的實(shí)現(xiàn)

    在開(kāi)發(fā)中,環(huán)境很多,本文主要介紹了springboot3環(huán)境隔離的實(shí)現(xiàn),能夠快速切換開(kāi)發(fā)、測(cè)試、生產(chǎn)環(huán)境,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • Java調(diào)用新浪api通過(guò)Ip查詢(xún)地區(qū)

    Java調(diào)用新浪api通過(guò)Ip查詢(xún)地區(qū)

    這篇文章主要介紹了Java調(diào)用新浪接口通過(guò)Ip查詢(xún)地區(qū),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • BufferedWriter如何使用write方法實(shí)現(xiàn)換行

    BufferedWriter如何使用write方法實(shí)現(xiàn)換行

    這篇文章主要介紹了BufferedWriter如何使用write方法實(shí)現(xiàn)換行的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 基于Java實(shí)現(xiàn)無(wú)向環(huán)和有向環(huán)的檢測(cè)

    基于Java實(shí)現(xiàn)無(wú)向環(huán)和有向環(huán)的檢測(cè)

    這篇文章主要介紹了如何在?Java?中實(shí)現(xiàn)無(wú)向環(huán)和有向環(huán)的檢測(cè),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定的幫助,需要的可以參考一下
    2022-04-04
  • Spring Boot + Vue 基于 RSA 的用戶(hù)身份認(rèn)證加密機(jī)制實(shí)現(xiàn)過(guò)程

    Spring Boot + Vue 基于 RSA 的用戶(hù)身份

    RSA是一種非對(duì)稱(chēng)加密算法,適用于用戶(hù)身份認(rèn)證加密,本文介紹了基于RSA的用戶(hù)身份認(rèn)證加密機(jī)制的實(shí)現(xiàn),包括前端Vue.js使用jsencrypt庫(kù)對(duì)用戶(hù)名密碼進(jìn)行加密,后端使用RSA私鑰解密驗(yàn)證用戶(hù)憑據(jù),感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • form-data與x-www-form-urlencoded的區(qū)別以及知識(shí)延伸

    form-data與x-www-form-urlencoded的區(qū)別以及知識(shí)延伸

    這篇文章主要給大家介紹了關(guān)于form-data與x-www-form-urlencoded的區(qū)別以及知識(shí)延伸,form-data和x-www-form-urlencoded都是HTTP請(qǐng)求中用于傳輸表單數(shù)據(jù)的編碼格式,需要的朋友可以參考下
    2023-11-11
  • java.sql.SQLRecoverableException關(guān)閉的連接異常問(wèn)題及解決辦法

    java.sql.SQLRecoverableException關(guān)閉的連接異常問(wèn)題及解決辦法

    當(dāng)數(shù)據(jù)庫(kù)連接池中的連接被創(chuàng)建而長(zhǎng)時(shí)間不使用的情況下,該連接會(huì)自動(dòng)回收并失效,就導(dǎo)致客戶(hù)端程序報(bào)“ java.sql.SQLException: Io 異常: Connection reset” 或“java.sql.SQLException 關(guān)閉的連接”異常問(wèn)題,下面給大家分享解決方案,一起看看吧
    2024-03-03
  • 劍指Offer之Java算法習(xí)題精講二叉樹(shù)專(zhuān)題篇上

    劍指Offer之Java算法習(xí)題精講二叉樹(shù)專(zhuān)題篇上

    跟著思路走,之后從簡(jiǎn)單題入手,反復(fù)去看,做過(guò)之后可能會(huì)忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會(huì)發(fā)現(xiàn)質(zhì)的變化
    2022-03-03
  • SpringMVC配置多個(gè)properties文件之通配符解析

    SpringMVC配置多個(gè)properties文件之通配符解析

    這篇文章主要介紹了SpringMVC配置多個(gè)properties文件之通配符解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 解決Maven靜態(tài)資源過(guò)濾問(wèn)題

    解決Maven靜態(tài)資源過(guò)濾問(wèn)題

    在我們使用Maven構(gòu)建項(xiàng)目的時(shí)候,會(huì)默認(rèn)過(guò)濾掉靜態(tài)資源,所以,需要手動(dòng)來(lái)配置,本文就介紹一下Maven靜態(tài)資源過(guò)濾的問(wèn)題解決,感興趣的可以了解一下
    2021-06-06

最新評(píng)論

石嘴山市| 资中县| 芦溪县| 南投县| 大冶市| 广水市| 新余市| 海门市| 萝北县| 夏邑县| 汶川县| 山阴县| 阳曲县| 田阳县| 丰顺县| 泰兴市| 遂溪县| 化隆| 和平县| 永年县| 红河县| 虹口区| 南乐县| 讷河市| 东乌珠穆沁旗| 沁阳市| 涪陵区| 进贤县| 孝感市| 岐山县| 合水县| 福建省| 台江县| 高州市| 邳州市| 固安县| 丰原市| 陆良县| 桐城市| 深州市| 曲靖市|