成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用Spring的AOP打印HTTP接口出入參日志

開發 前端
本文分享了通過Spring的AOP功能,完成HTTP接口的出入參日志的打印的方法,同時也說明,越是基礎的東西,越是實用。

前言

最近在維護一個運營端的系統,和前端聯調的過程中,經常需要排查一些交互上的問題,每次都得看前端代碼的傳參和后端代碼的出參,于是打算給HTTP接口加上出入參日志。

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

思路

定義個一個SpringAOP的配置類,里邊獲取請求的URL、請求的入參、相應的出參,通過日志打印出來。

SpringBoot的aop依賴:

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

示例

1.編寫一個HTTP接口

定義了一個Controller,里邊就一個方法,方法請求類型是get,出入參都是簡單的一個字符串字段。

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.編寫一個AOP日志配置

這算是本文的重點了,定義一個AOP的內容,首先是切點,再者是請求前日志打印,最后請求后日志打印

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 {
/**
* 切點路徑:Controller層的所有方法
*/
@Pointcut("execution(public * com.example.springbootaoplog.controller.*.*(..))")
public void methodPath() {
}

/**
* 入參
*
* @param joinPoint 切點
*/
@Before(value = "methodPath()")
public void before(JoinPoint joinPoint) {
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
String url = requestAttributes.getRequest().getRequestURL().toString();
log.info("請求 = {}, 入參 = {}", 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("請求 = {}, 入參 = {}", url, JSON.toJSONString(res));
}
}

3.結果測試

我們通過瀏覽器的URL,針對我們編寫的http接口,發起一次get請求:

可以看到,日志里邊打印了我們預期的請求的URL和出入參了:

說明我們的程序是正確的了。

最后

本文分享了通過Spring的AOP功能,完成HTTP接口的出入參日志的打印的方法,同時也說明,越是基礎的東西,越是實用。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2021-03-01 23:26:41

日志Spring BootAOP

2022-02-08 17:07:54

Spring BooSpring Aop日志記錄

2023-03-30 07:48:46

接口鑒權SpringBoot

2020-07-21 08:06:05

日志

2009-06-19 11:09:27

Spring AOP

2012-07-11 14:31:16

SpringAop

2024-03-11 09:32:55

WebClientSpringHTTP

2023-03-16 08:14:57

2024-03-08 10:05:09

SpringHTTP接口

2009-06-19 13:28:30

Spring AOPSpring 2.0

2022-06-07 07:58:45

SpringSpring AOP

2024-11-04 16:29:19

2009-06-22 10:41:34

Spring.AOP

2022-02-17 13:39:09

AOP接口方式

2021-11-24 07:25:47

ESClickHouse存儲

2009-06-18 14:54:52

Spring AOP

2019-11-29 16:21:22

Spring框架集成

2022-06-08 08:04:28

Springservicerepository

2024-09-02 00:27:51

SpringAOP自定義

2023-02-01 09:15:41

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91精品国产91 | 欧美精品一区二区免费 | 免费观看黄色片视频 | 国产天天操 | 欧美亚洲视频 | 成人性视频在线 | 国产精品自产av一区二区三区 | 成人婷婷 | 国产精品免费一区二区三区四区 | 免费精品久久久久久中文字幕 | 日韩在线观看网站 | 91资源在线 | 色又黄又爽网站www久久 | 国产午夜视频 | 欧美视频第二页 | 中文在线a在线 | 亚洲福利| 日本三级在线视频 | 另类视频区 | 黄色一级大片在线免费看产 | 日韩精品在线看 | 天天色综网 | 久草视频在线播放 | 91看片在线观看 | 欧美国产日韩在线 | 亚洲欧美在线视频 | 国产亚洲成av人在线观看导航 | 91久久精品一区二区二区 | av影音资源 | 粉嫩一区二区三区国产精品 | 亚洲免费人成在线视频观看 | 国产黄色电影 | 日韩久草 | 亚洲xx在线 | 国产一区二区免费 | 免费观看毛片 | 精品国产鲁一鲁一区二区张丽 | 国产精品一区二区三区在线播放 | 日韩国产一区二区三区 | 日本一区不卡 | 国产成人精品999在线观看 |