【IDEA】設置Debug調試時調試器不進入特定類(Spring框架、Mybatis框架)

問題

Ruoyi-Vue項目為例,以Debug方式啟動項目,在com.ruoyi.web.controller.system.SysUserController#list()方法中的userService.selectUserList(user)處打上斷點,訪問[系統管理–用戶管理]頁面,程序就會執行到該斷點處
在這里插入圖片描述
此時按下"步入"(F5),發現并不是直接進入業務方法SysUserServiceImpl#selectUserList(),而是進入了Spring框架的org.springframework.aop.framework.CglibAopProxy#intercept()方法

原因:Spring 框架使用動態代理(如 CGLIB 或 JDK Proxy)處理 AOP 切面,導致調試器優先進入框架層。
在這里插入圖片描述
此時可以在調用棧中往下找到對UserServiceImpl#selectUserList()方法的調用,單擊它,就會跳轉到對應方法上,在該方法第一行打上斷點
在這里插入圖片描述
按下"恢復程序"(F8),就會執行到該斷點處
在這里插入圖片描述
可是這種方式的痛點是:每次還是會進入Spring框架的類,然后需要手動從調用棧跳轉到業務方法上,并且一般一個項目都有很多Service接口,每次都這么操作的話就很麻煩,效率非常低下,會顯著降低調試速度。

分析

通過IDE(如 IntelliJ IDEA)的調試器設置,配置調試器不進入特定類,可以跳過指定包下的所有類,這樣就一勞永逸地避免調試時進入 Spring 框架層,直接聚焦業務邏輯。

解決

打開[設置–構建、執行、部署–調試器–步進],勾選"不要進入類",點擊"+“號,選擇[添加類],或選擇[添加模式],第一種是指定某一個具體類,而第二種可以使用”*"進行模糊匹配
在這里插入圖片描述

這里使用[添加模式],輸入org.springframework.*(表示不進入org.springframework包及其子孫包下的所有類),點擊[確定],再以同樣步驟添加org.aspectj.*

此設置對所有調試會話生效,無需重復配置。
在這里插入圖片描述
此時可以看到列表中多了org.springframework.*org.aspectj.*,點擊[應用]–[確定]
在這里插入圖片描述
再次訪問[系統管理–用戶管理]頁面,程序再次執行到com.ruoyi.web.controller.system.SysUserController#list方法的斷點處
在這里插入圖片描述
此時按下"步入"(F5),就不會進入匹配到org.springframework.*org.aspectj.*的類,而是直接執行到com.ruoyi.framework.aspectj.DataScopeAspect#doBefore(這是Ruoyi項目自定義的AOP類)
在這里插入圖片描述
如果項目中使用了其他框架(如 HibernateMyBatis),可以類似添加模式(如 org.hibernate.*org.apache.*)。這能進一步減少干擾。
在這里插入圖片描述

總結

通過配置“調試器不進入特定類”模式,能一勞永逸地避免調試時進入框架層,直接聚焦業務邏輯。這在大項目中尤為實用,能顯著提升調試效率。

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

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

相關文章

OpenCV 視頻處理全解析

OpenCV 視頻處理全解析:從基礎操作到高級應用?在計算機視覺領域,視頻處理是一個核心且廣泛應用的技術方向。無論是安防監控、自動駕駛還是短視頻特效,都離不開對動態視頻流的智能分析與處理。OpenCV 作為最流行的開源計算機視覺庫&#xff0…

java如何使用正則提取字符串中的內容

在Java中使用正則表達式提取字符串內容,主要通過java.util.regex包中的Pattern和Matcher類實現。以下是詳細步驟和示例:1. 基礎流程 import java.util.regex.Matcher; import java.util.regex.Pattern;public class RegexExample {public static void ma…

Baumer高防護相機如何通過YoloV8深度學習模型實現行人跌倒的檢測識別(C#代碼UI界面版)

《------往期經典推薦------》 AI應用軟件開發實戰專欄【鏈接】 序號項目名稱項目名稱11.工業相機 YOLOv8 實現人物檢測識別:(C#代碼,UI界面版)2.工業相機 YOLOv8 實現PCB的缺陷檢測:(C#代碼&#xff0…

jetson orin nx(8G)燒錄super系統實錄

1. 說明 2. 下載新版發布包(在PC上下載) Jetson Linux Archive | NVIDIA Developer 安裝的jetpack版本為6.2.1(rev.2)對應的Jetson Linux 36.4.4 點擊綠色區域的36.4.4>,進入下載頁面,如下 點擊Driver Package(B…

LeetCode算法日記 - Day 11: 尋找峰值、山脈數組的峰頂索引

目錄 1. 尋找峰值 1.1 題目解析 1.2 解法 1.3 代碼實現 2. 山脈數組 2.1 題目解析 2.2 解法 2.3 代碼實現 1. 尋找峰值 162. 尋找峰值 - 力扣(LeetCode) 峰值元素是指其值嚴格大于左右相鄰值的元素。 給你一個整數數組 nums,找到峰…

Cherryusb UAC例程對接STM32 SAI播放音樂和錄音(下)=>USB+SAI+TX+RX+DMA控制WM8978播放和錄音實驗

1. 程序基本框架 整個程序框架, 與之前的一篇文章《Cherryusb UAC例程對接STM32內置ADC和DAC播放音樂和錄音(中)>UACSTM32 ADCDAC實現錄音和播放》基本一致, 只是這次將ADC和DAC替換成了SAI TX/RX。因此這里不再贅述了。2. sai_dma_wm8978_usb.c主程序的實現說明 在menuconf…

Docker運行python項目:使用Docker成功啟動FastAPI應用

根據昨天成功使用阿里云鏡像加速后,我是根據windows本地的python項目,直接傳到了centos,然后再導入到docker里面,然后進行運行,主要是發現運行的時候,老是提示一些庫的問題,還有就是一些python老…

PowerShell來關閉 Windows 安全中心

你可以使用 PowerShell 來關閉 Windows 安全中心的盾牌圖標(通知)。以下是幾種方法,包括禁用通知、關閉 Windows Defender(不推薦)或調整注冊表。方法 1:禁用 Windows 安全中心通知(推薦&#x…

基于深度學習的老照片修復系統

背景隨著時間的推移,老照片可能會因褪色、損壞或曝光不當而影響其視覺質量。這些珍貴的影像承載著歷史和回憶,但由于物理損耗,它們的觀賞價值和可讀性逐漸下降。為了恢復這些照片的清晰度和色彩,本項目采用深度學習與先進的圖像處…

深入解析Tomcat目錄結構

Apache Tomcat 是一個強大的 Servlet 容器,它不僅支持 Java Servlet 和 JSP 技術,還提供了豐富的功能來幫助開發者構建和部署動態的 Web 應用。為了更好地理解和使用 Tomcat,了解其文件結構和組成部分是至關重要的。本文將深入探討 Tomcat 的目錄結構及其各個組件的作用。 …

專題:2025抖音電商與微短劇行業研究報告|附150+份報告PDF匯總下載

原文鏈接:https://tecdat.cn/?p43595 當618大促的硝煙散去,抖音電商的生態分化愈發刺眼:服飾內衣以27.5%的份額穩坐頭把交椅,而無數中小商家卻在“流量荒”中掙扎。這場看似繁榮的盛宴里,平臺規則如同無形的手&#x…

3.Ansible自動化之-編寫和運行playbook

3.Ansible編寫和運行 Playbook Playbook 介紹 如果把 Ansible 的ad-hoc命令比作 “一次性腳本”(適合臨時執行單個簡單任務),那么Playbook就是 “可重復執行的程序”(適合復雜、多步驟的管理流程)。 舉個例子&#…

Vue實時刷新,比如我提交審核,審核頁面還需要點查詢才能看到最新數據

refreshTimer: null,lastRefreshTime: null}; }, created() {console.log(組件創建,初始化數據...);this.loadLatestData();this.setupAutoRefresh(); }, activated() {// 當使用keep-alive時,組件激活時刷新數據console.log(組件激活,刷新數…

Docker入門:容器化技術的第一堂課

Docker入門:容器化技術的第一堂課 🌟 你好,我是 勵志成為糕手 ! 🌌 在代碼的宇宙中,我是那個追逐優雅與性能的星際旅人。 ? 每一行代碼都是我種下的星光,在邏輯的土壤里生長成璀璨的銀河&#…

【SLAM】不同相機模型及其常見的鏈式求導推導

【SLAM】不同相機模型及其常見的鏈式求導推導1. 魚眼相機模型鏈式求導1. 魚眼相機畸變模型2. 雅可比矩陣的推導畸變坐標相對于歸一化坐標的雅可比矩陣 Hdz/dznH_{dz/dzn}Hdz/dzn?畸變坐標相對于相機內參的雅可比矩陣 Hdz/dzetaH_{dz/dzeta}Hdz/dzeta?3. 注意4. 輸入輸出含義5…

【人工智能】本地部署 KTransformers并加載大模型筆記

博主未授權任何人或組織機構轉載博主任何原創文章,感謝各位對原創的支持! 博主鏈接 本人就職于國際知名終端廠商,負責modem芯片研發。 在5G早期負責終端數據業務層、核心網相關的開發工作,目前牽頭6G技術研究。 博客內容主要圍繞…

TDengine IDMP 高級功能(3. 概念解釋)

枚舉集 為提升數據的可閱讀性,IDMP 為數據提供枚舉類型。您可以將一些整型數定義為一具有可讀性的字符串。與其他軟件一樣,您可以定義多個枚舉集,每個枚舉集可以有多個枚舉量。您可以增加、刪除、修改、查詢枚舉集與枚舉量。 但獨特的是&am…

CUDA 入門教程(GPT優化版)

學習路徑 一、環境準備與快速入門 搭建開發環境 ○ 安裝 CUDA Toolkit,適用于 Windows(如 Visual Studio)或 Linux,確保你的設備為 NVIDIA GPU 并支持 CUDA。(wholetomato.com) ○ 如果你偏好輕量工具,也可用 VS Code + Nsight 開發環境進行 CUDA 編程。(wholetomato.com)…

react項目性能優化的hook

前言:在項目中開發中,性能優化是很重要的,react有提供專門的hook,useMemo 和useCallback 這里說一說他們。區別:特性useMemouseCallback返回值緩存一個 值(計算結果)緩存一個 函數依賴變化時重新…

Docker(springcloud筆記第三期)

p.s.這是萌新自己自學總結的筆記,如果想學習得更透徹的話還是請去看大佬的講解 目錄鏡像與容器一些命令與鏡像命名規范數據卷自定義鏡像Dockerfile鏡像與容器 當我們利用Docker安裝應用時,Docker會自動搜索并下載應用鏡像(image),鏡像不僅包含應用本身&…