
不恋无回应 转身风自轻
你是不是也遇到过这种情况:
dev 环境,结果连上了生产库?😱别慌,不是你代码写错了,而是 Spring 在“暗中操作” ——而你根本看不见它到底干了啥。
直到我用了 IDEA 的 Spring Debugger 插件,才真正体会到什么叫“所见即所得”的调试体验!
Spring Boot 的魅力在于“约定优于配置”,但它喜欢把很多逻辑藏在运行时:
application.yml、环境变量,还是命令行参数来的?@Transactional 到底生效没?传统调试器只能看到 Java 对象,却看不到 Spring 的“内心戏”。

JetBrains 官方出品的 Spring Debugger 插件,能让你在调试时直接“透视” Spring 的运行时情况!
Settings → Plugins💡 小贴士:支持本地调试、远程 JVM 调试(JDWP),只要 IDEA 能识别到 Spring 上下文就行。

调试时,打开 Debug 工具窗口 → Spring 标签页,你会看到:
@ConditionalOnMissingBean)点击任意 Bean,直接跳转到它的定义或配置类!再也不用全局搜索 @Service 了。
🎯 实战场景:你注入了
UserService,但实际跑的是MockUserService?一眼识破!
在 application.yml 或 .properties 文件中,IDEA 会内联显示运行时值,例如:
database.url: jdbc:mysql://localhost:3306/mydb
# Runtime → jdbc:mysql://prod-db:3306/mydb (from ENV)立刻知道:最终生效的是环境变量里的值,而不是你本地写的!

调试时,打开 Database 工具窗口,IDEA 会自动检测 Spring 创建的数据库连接:

在断点处按 Alt + F8,输入 Bean 名称:
userService.getUserById(123)IDEA 会自动补全 Bean,并允许你直接调用方法、查看返回值,无需重启!

🎯 实战场景:验证某个 Service 方法是否真的返回了缓存数据?当场测试!
停在 @Transactional 方法里,看 Variables 视图,你会看到:
READ_COMMITTED)REQUIRED)
🎯 实战场景:为什么
@Transactional没回滚?原来是因为异常被 try-catch 吞了!
不需要加日志、不需要改代码、不需要重启应用,所有信息直接集成在 Debug 窗口,无缝衔接你的开发流程。
Spring 的抽象让我们高效,但也让我们在出错时“两眼一抹黑”。
Spring Debugger 把“黑盒”变成“玻璃盒”:
少猜,少 log,多摸鱼!