IntelliJ调试Spring Boot代码时无法进入自定义方法问题求助
解决Spring Boot调试时陷入CglibAopProxy/MethodProxy的问题
这是Spring AOP动态代理导致的调试干扰问题——你的业务Bean被Spring用CGLIB生成了代理类,调试器默认会跟进这些框架生成的代理类代码,所以才会出现返回时卡在MethodProxy、进入方法时跳到CglibAopProxy的情况。之前正常现在出问题,大概率是调试配置被重置,或是最近新增了AOP切面导致更多Bean被代理了。
给你几个实用的解决步骤:
配置IntelliJ调试过滤,跳过代理类代码
这是最彻底的解决方案:- 打开IntelliJ的设置(快捷键
Ctrl+Alt+S),找到Build, Execution, Deployment → Debugger → Stepping - 勾选Skip synthetic methods(这个选项会跳过代理类自动生成的合成方法)
- 在
Do not step into the classes列表中,添加以下类/包:org.springframework.cglib.proxy.*org.springframework.aop.framework.*
- 点击Apply保存,重启调试试试
- 打开IntelliJ的设置(快捷键
临时排查AOP切面问题
如果是最近新增了AOP切面,可能是切面的切点范围太广,导致大量Bean被代理。可以先注释掉新增的切面,重新启动调试,看是否恢复正常,逐步定位到有问题的切面配置。用Force Step Into强制进入业务方法
当调试器跳到代理类代码时,用快捷键Alt+Shift+F7(Force Step Into),可以强制绕过代理层,直接进入你自己写的目标方法逻辑。检查代理模式配置
看看项目的VM参数里有没有-Dspring.aop.proxy-target-class=true,这个参数会强制Spring使用CGLIB代理(默认有接口时用JDK动态代理)。如果你的业务类都有接口,可以尝试去掉这个参数切换成JDK代理,配合上面的过滤设置会让调试更顺畅。
如果是最近升级了IntelliJ或者Spring Boot版本,也可能是默认调试配置被重置了,按照上面的步骤重新配置一遍基本就能解决。
内容的提问来源于stack exchange,提问作者user697911
相关产品推荐
相关产品推荐

