“代码写得慢,加班到天亮。”
很多时候,不是我们技术不行,而是工具没用对。
作为一名 Java 开发者,IntelliJ IDEA 是我们吃饭的家伙。但你真的会用它吗?
还在用 System.out.println 打印日志调试?
还在手动写 setter/getter 和 Mapper 转换代码?
还在为复杂的 SQL 拼接头秃?
今天,我把自己珍藏多年的 IDEA 高级调试技巧 和 5 款生产力插件 分享出来,助你早点下班!
🛠️ 第一部分:IDEA 高级调试 (Debug) 技巧
别再只会打红点断点了,这些技巧能让你像外科医生一样精准定位 Bug。
1. 条件断点 (Conditional Breakpoint)
场景:循环遍历 10000 次,只想在 id = 8888 时停下来。
操作:
- 在代码行打上断点。
- 右键点击断点图标。
- 在 Condition 框中输入:user.getId() == 8888。
- 点击 Done。
效果:程序会飞速运行,直到满足条件才暂停。
2. 动态修改变量 (Set Value)
场景:逻辑判断 if (balance > 100),但数据库里余额只有 10 块,想测试分支逻辑,又不想改数据库。
操作:
- Debug 模式下,程序暂停。
- 在 Variables 面板找到 balance 变量。
- 右键 -> Set Value (或 F2),输入 200。
效果:程序会按余额 200 的逻辑继续执行,无需重启服务!
3. 强制返回 (Force Return)
场景:前面的逻辑跑完了,想跳过后面复杂的数据库操作,直接返回一个模拟结果。
操作:
- 在方法内部暂停。
- 右键栈帧 (Frames) -> Force Return。
- 输入你想返回的值(例如 true 或 new User())。
效果:该方法立即结束,后面的代码一行都不会执行。
4. 表达式求值 (Evaluate Expression)
场景:想看看 user.getList().stream().filter(...).count() 的结果,但代码里没写这句。
操作:
- 按 Alt + F8 (Mac: Option + F8)。
- 在弹窗里随便写 Java 代码,甚至可以 new 对象、调用 DB 查询。
效果:实时查看运行结果,不污染源代码。
🧩 第二部分:5 款神级插件 (Plugin)
装上这些插件,你的 IDEA 就是完全体。
1. 📝 MyBatisX (官方出品)
-
痛点:Mapper 接口和 XML 文件跳来跳去,眼睛都花了。
-
功能:
- 小鸟图标跳转:点击接口旁的小鸟,直接跳到 XML 对应的 SQL;点击 XML,跳回接口。
- 代码生成:根据表结构自动生成 Entity、Mapper、Service、XML,比原生 Generator 好用一万倍。
-
推荐指数:⭐⭐⭐⭐⭐ (MyBatis 用户必装)
2. 🔄 MapStruct Support
- 痛点:微服务开发中,DTO、VO、DO 互相转换,写一堆 set/get 代码,又累又丑。
- 功能:配合 MapStruct 库,自动生成转换代码。插件提供代码提示、跳转和错误检查。
- 推荐指数:⭐⭐⭐⭐⭐ (拒绝 BeanUtils 反射,拥抱高性能)
3. 🔍 RestfulToolkit (或 Restful Fast Request)
-
痛点:接口写好了,想测试一下,还得打开 Postman,复制 URL,填参数...
-
功能:
- 接口搜索:Ctrl + \ (Cmd + `),直接搜 URL 找到 Controller 方法。
- 内置调试:右侧边栏直接发起 HTTP 请求,参数自动生成,堪称 IDEA 版 Postman。
-
推荐指数:⭐⭐⭐⭐
4. 🎨 Rainbow Brackets (彩虹括号)
- 痛点:(((()))) 括号套娃,看瞎眼。
- 功能:给配对的括号染上相同的颜色。
- 隐藏大招:Alt + 右键 点击某个括号,会高亮显示这对括号内的所有代码,其余变暗。阅读复杂代码的神器!
- 推荐指数:⭐⭐⭐⭐
5. 🤖 Bito / Tongyi Lingma (AI 助手)
-
痛点:这段代码啥意思?这个正则怎么写?帮我写个单元测试?
-
功能:IDEA 里的 AI 结对编程伙伴。
- 解释代码:选中代码,右键 Explain。
- 生成单测:选中方法,右键 Generate Test。
-
推荐指数:⭐⭐⭐⭐⭐ (AI 时代,不用就是落后)
💡 架构师寄语
工具的价值在于**“解放人” 。
当你不再被繁琐的 sout、setter、xml 查找所困扰时,你才能腾出精力去思考架构、业务和逻辑**。
如果你有私藏的好用插件或技巧,欢迎在评论区留言,我们一起“摸鱼”!🐟