能困住自己的都是自己无法忘记的过往
还在为线上环境“明明本地跑得好好的,一部署就崩”而抓狂?
想看看远程服务器上 Spring 的 Bean 到底长啥样,却只能靠 log.info() 猜谜?
好消息来了!IntelliJ IDEA 的 Spring Debugger 插件在 2026 年初正式支持远程调试,而且——完全不需要 debug agent!
今天就手把手教你如何用这个“魔法功能”,把远程 Spring Boot 应用变成你的“透明玻璃盒”。
先快速回顾一下: Spring Debugger 是 JetBrains 在 2025 年 5 月推出的官方插件,专治 Spring Boot 的“黑盒病”。
它能让你在 Debug 时:
application.yml 中的值)userService.findById(1).getName())但之前它只支持 本地应用。现在,它终于能连上 远程服务 了!
很多远程调试方案要求你在启动时加 -javaagent,比如:
-javaagent:/path/to/some-debug-agent.jar但问题来了:
IntelliJ IDEA 的方案完全不同: ✅ 不依赖任何 agent ✅ 不侵入业务代码 ✅ 只需标准 JVM 远程调试端口
这就像你去朋友家串门——不用换鞋、不用登记,直接推门进去聊天 😎
以 Docker Compose 为例:
http-server:
image:'your-spring-app:latest'
environment:
- JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
ports:
-'8080:8080'# 应用端口
-'5005:5005'# 调试端口关键参数解释:
address=*:5005:监听所有 IP 的 5005 端口(生产环境建议限制 IP)suspend=n:应用启动时不等待调试器(避免卡住)💡 小贴士:如果你用的是
java -jar,直接加到启动命令里:bash java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 -jar app.jar
+ → 选择 Remote JVM Debug192.168.1.100 或 your-domain.com)5005
✅ 这一步是关键!如果 classpath 不对,断点会失效或无法查看变量。
连接成功后,你就能:
@myService.doSomething())就像在本地开发一样丝滑!
目前支持三大主流内嵌 Servlet 容器,但行为略有不同:
容器 | 上下文加载时机 | 说明 |
|---|---|---|
Tomcat | 立即可用 | 启动后立刻能查看 Bean |
Jetty / Undertow | 需首次请求后 | 因线程模型差异,需等第一个 HTTP 请求到达 |