Aop實現簡單基于日志記錄

目錄

一、基礎知識:

二、測試記錄接口的參數和結果


一、基礎知識:

  • @Before:用于執行目標方法之前的邏輯。
  • @After:用于執行目標方法之后的邏輯。
  • @AfterReturning:用于獲取目標方法返回值后的邏輯。
  • @AfterThrowing:用于處理目標方法拋出異常后的邏輯。
  • @Around:用于在目標方法執行前后執行邏輯,并可控制是否執行目標方法。
  • @Pointcut:用于定義切入點,指定哪些方法將被通知。

二、測試記錄接口的參數和結果

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Loggable {String value() default "";}
@Aspect
@Component
@Slf4j
public class LoggingAspect {@Pointcut("@annotation(loggable)")public void loggableMethod(Loggable loggable) {}@Around("loggableMethod(loggable)")public Object logAround(ProceedingJoinPoint joinPoint, Loggable loggable) throws Throwable {// 獲取方法名和參數String methodName = joinPoint.getSignature().getName();Object[] args = joinPoint.getArgs();log.info("Starting method: {}", methodName);log.info("Request parameters: {}", Arrays.toString(args));// 調用目標方法并獲取返回值Object result = joinPoint.proceed();log.info("Finished method: {}", methodName);log.info("Response: {}", result);return result; // 返回結果}@Before("loggableMethod(loggable)")public void logBefore(JoinPoint joinPoint, Loggable loggable) {log.info("Starting method: {}", joinPoint.getSignature().getName());log.info("Request parameters: {}", Arrays.toString(joinPoint.getArgs()));}@After("loggableMethod(loggable)")public void logAfter(JoinPoint joinPoint, Loggable loggable) {log.info("Finished method: {}", joinPoint.getSignature().getName());}
}

結果:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/72239.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/72239.shtml
英文地址,請注明出處:http://en.pswp.cn/web/72239.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Nacos】服務發布之優雅預熱上線方案

目錄 一、背景二、注冊時機2.1、注冊機制2.2、分析源碼找到注冊時機 三、注冊前心跳健康檢測3.1、方案實施3.2、源碼分析3.3、優化代碼 四、流量權重配置五、總結5.1、整體完整流程:5.2、流程圖:5.1、優化方案完整代碼: 一、背景 有些面向廣…

接口自動化腳本優化的多個關鍵維度及具體方法總結

以下是優化接口自動化腳本的多個關鍵維度及具體方法,幫助提升測試效率、可維護性和可靠性: 1. 測試用例設計優化 維度優化方法參數化使用數據驅動(如CSV、Excel、JSON),分離測試數據與邏輯,減少重復代碼。…

AI驅動的數字供應鏈安全情報預警服務:云脈XSBOM

先發制人,精準預警數字供應鏈中的安全風險 Pre-emptive Strategy, Accurate Warning of Security Risks in Digital Supply Chain 云脈XSBOM數字供應鏈安全情報預警依托懸鏡安全團隊強大的供應鏈管理監測能力和AI安全大數據云端分析能力,對全球數字供應…

8051匯編--條件轉移指令

在8051匯編語言中,控制轉移指令用于改變程序的執行順序,主要包括無條件轉移、條件轉移和調用/返回指令。以下是對這些指令的總結: 一、無條件轉移指令 LJMP(Long Jump) ? 功能:長轉移,可以跳…

Kubernetes學習筆記-移除Nacos遷移至K8s

項目服務的配置管理和服務注冊發現由原先的Nacos全面遷移到Kubernetes上。 一、移除Nacos 移除Nacos組件依賴。 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <…

算法系列之回溯算法求解數獨及所有可能解

有沒有對數獨感興趣的朋友呢&#xff1f;數獨作為一款經典的邏輯游戲&#xff0c;其目標是在一個9x9的方格中填入數字1至9&#xff0c;確保每一行、每一列以及每一個3x3的子網格中都包含這些數字且不重復。盡管數獨的規則看似簡單&#xff0c;但編寫一個能夠自動求解數獨的程序…

C++ primer plus 類和對象上

目錄 前言 一 接口的設計 二 方法的設計和使用 三 構造函數 四 析構函數 五 析構函數和構造函數小結 總結 前言 前面已經描述了很多有關于類和對象的知識了&#xff0c;所以我們直接開始上手操作 一 接口的設計 首先我們要知道什么是接口 接口是一個共享框架&…

css模擬雷達掃描動畫

<div class"radar-scan"><div class"radar-container" /></div> 樣式&#xff1a; .radar-scan {background-image: linear-gradient(0deg,transparent 24%,rgba(32, 255, 77, 0.15) 25%,rgba(32, 255, 77, 0.15) 26%,transparent 27%,…

AdaLoRA 參數 配置:CAUSAL_LM“ 表示因果語言模型任務

AdaLoRA 參數 配置:CAUSAL_LM" 表示因果語言模型任務 config = AdaLoraConfig( init_r=16, # 增加 LoRA 矩陣的初始秩 lora_alpha=32, target_modules=[“q_proj”, “v_proj”], lora_dropout=0.1, bias=“none”, task_type=“CAUSAL_LM” ) 整體功能概述 AdaLoraCon…

C# 集合

集合 概述集合接口和類型列表(ArrayList, List)隊列(Queue)棧(Statck)鏈表(LinkedList)有序表(SortedList)字典Lookup類其他字典類 HashSet(不重復項的無序列表)位數組BitArrayBitVector32 性能 概述 數組和Array類。數組的大小是固定的。如果元素個數是動態的&#xff0c;就應…

WebSocket與MQTT協議深度對比:選擇合適的通信協議

在現代互聯網應用中&#xff0c;實時通信變得愈發重要。隨著物聯網&#xff08;IoT&#xff09;和實時數據流的普及&#xff0c;選擇合適的通信協議顯得尤為關鍵。WebSocket和MQTT是當前最為流行的兩種協議&#xff0c;它們各自有不同的應用場景、優缺點以及性能特點。在這篇文…

ELK(Elasticsearch、Logstash、Kbana)安裝及Spring應用

Elasticsearch安裝及Spring應用 一、引言二、基本概念1.索引&#xff08;Index&#xff09;2.類型&#xff08;Type&#xff09;3.文檔&#xff08;Document&#xff09;4.分片&#xff08;Shard&#xff09;5.副本&#xff08;Replica&#xff09; 二、ELK搭建1.創建掛載的文件…

MacOS 15.3.1 安裝 GPG 提示Error: unknown or unsupported macOS version: :dunno

目錄 1. 問題鎖定 2. 更新 Homebrew 3. 切換到新的 Homebrew 源 4. 安裝 GPG 5. 檢查 macOS 版本兼容性 6. 使用 MacPorts 或其他包管理器 7. 創建密鑰&#xff08;生成 GPG 簽名&#xff09; 往期推薦 1. 問題鎖定 通常是因為你的 Homebrew 版本較舊&#xff0c;或者你…

C++:類和對象(從底層編譯開始)詳解[前篇]

目錄 一.inline內聯的詳細介紹 &#xff08;1&#xff09;為什么在調用內聯函數時不需要建立棧幀&#xff1a; &#xff08;2&#xff09;為什么inline聲明和定義分離到兩個文件會產生鏈接錯誤&#xff0c;鏈接是什么&#xff0c;為什么沒有函數地址&#xff1a; 二.類&…

C++中,存儲持續性、作用域和鏈接性

在C++中,存儲持續性、作用域和鏈接性是變量和函數的重要屬性,它們共同決定了變量的生命周期、可見性以及跨文件訪問能力。以下是詳細的總結: 1. 存儲持續性(Storage Duration) 存儲持續性指變量在內存中的生命周期,分為四類: 自動存儲持續性(Automatic) 局部變量(函…

四種 No-SQL

在一個常規的互聯網服務中&#xff0c;讀取與寫入的比例大約是 100:1 到 1000:1。然而&#xff0c;從硬盤讀取時&#xff0c;數據庫連接操作耗時&#xff0c;99% 的時間花費在磁盤尋址上。 為了優化讀取性能&#xff0c;非規范化的設計通過添加冗余數據或分組數據來引入。下述…

【 Manus平替開源項目】

文章目錄 Manus平替開源項目1 OpenManus1.1 簡介1.2 安裝教程1.3 運行 2 OWL2.1 簡介2.2 安裝教程2.3 運行 3 OpenHands&#xff08;原OpenDevin&#xff09;3.1 簡介3.2 安裝教程和運行 Manus平替開源項目 1 OpenManus 1.1 簡介 開發團隊: MetaGPT 核心貢獻者&#xff08;5…

【Linux 服務之ollama 部署過慢問題】

特別慢的 curl -fsSL https://ollama.com/install.sh | sh參考 方法1 export OLLAMA_MIRROR"https://ghproxy.cn/https://github.com/ollama/ollama/releases/latest/download" curl -fsSL https://ollama.com/install.sh | sed "s|https://ollama.com/downl…

療養院管理系統設計與實現(代碼+數據庫+LW)

摘 要 傳統辦法管理信息首先需要花費的時間比較多&#xff0c;其次數據出錯率比較高&#xff0c;而且對錯誤的數據進行更改也比較困難&#xff0c;最后&#xff0c;檢索數據費事費力。因此&#xff0c;在計算機上安裝療養院管理系統軟件來發揮其高效地信息處理的作用&#xf…

Web后端開發之Maven

Maven Mven是apache旗下的一個開源項目&#xff0c;用來管理和構建java項目的工具。 通過一小段描述信息來管理項目。 Maven的作用 1.依賴管理&#xff1a;方便快捷的管理項目依賴的資源&#xff08;jar包&#xff09;&#xff0c;避免版本沖突問題 以前用某個jar包需要下載…