当前位置: 首页 > ops >正文

【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.xdnf.cn/news/18026.html

相关文章:

  • 项目发布上线清单
  • 数据链路层(2)
  • JavaScript 性能优化实战大纲
  • Go语言企业级权限管理系统设计与实现
  • Pulsar存储计算分离架构设计之存储层BookKeeper(上)
  • 【165页PPT】锂电池行业SAP解决方案(附下载方式)
  • 2024年08月13日 Go生态洞察:Go 1.23 发布与全面深度解读
  • 海洋牧场:引领渔业从传统到现代的华丽跨越
  • 【LeetCode】10. 正则表达式匹配
  • [GLM-4.5] LLM推理服务器(SGLang/vLLM) | 工具与推理解析器
  • 云计算-k8s实战指南:从 ServiceMesh 服务网格、流量管理、limitrange管理、亲和性、环境变量到RBAC管理全流程
  • Tomcat Endpoint的核心概念和实现细节
  • Meteodyn WT 6.7(Meteodyn)风力资源评估及微观选址软件工具
  • Unity进阶--C#补充知识点--【Unity跨平台的原理】了解.Net
  • 积鼎科技CFD VirtualFlow:引领国产多相流仿真技术,赋能工业智造
  • UE5多人MOBA+GAS 49、创建大厅
  • 数据结构:二叉树的高度 (Height)和节点总数 (Count of Nodes)
  • 第 463 场周赛(GPT-3,Me-1)
  • 【C#补全计划】多线程
  • Agent开发进阶路线:从基础响应到自主决策的架构演进
  • pytorch线性回归
  • 电力设备状态监测与健康管理:从数据感知到智能决策的技术实践​
  • 6-服务安全检测和防御技术
  • Spring AI 集成阿里云百炼平台
  • 嵌入式练习项目——————抓包获取天气信息
  • 【论文阅读】美 MBSE 方法发展分析及启示(2024)
  • 2023年全国研究生数学建模竞赛华为杯E题出血性脑卒中临床智能诊疗建模求解全过程文档及程序
  • 【牛客刷题】01字符串按递增长度截取并转换为十进制数值
  • 云原生俱乐部-RH134知识点总结(3)
  • Kafka_Broker_副本基本信息