Hello! 欢迎来到小浪资源网!


IntelliJ IDEA是如何在禁用JMX和日志的情况下识别Spring Boot端口号的?


IntelliJ IDEA是如何在禁用JMX和日志的情况下识别Spring Boot端口号的?

IntelliJ ideA 识别 spring Boot 端口号的原理

当使用 IntelliJ idea Ultimate 运行 spring boot 项目时,IDE 会自动显示端口号。即使在配置 server.port=0 并禁用输出日志的情况下,它仍然可以识别出端口号。

过去,人们认为 intellij idea 是从 JMX 中获取端口号的。然而,当禁用 JMX 端点时,IDE 仍然能够识别端口号。这表明还有另一种方法。

实际上,IntelliJ IDEA 使用 JavaAgent 在要启动的进程中注入代码。这些注入的代码启动了一个服务,用于接收 IDEA 的指令和返回进程信息。通过这种方式,IDE 可以控制进程并访问其端口号。

使用 Java 的 RMI(远程方法调用)可以创建类似的通信协议。通过在进程中注入 RMI 服务,IntelliJ IDEA 可以远程获取端口号和其他信息。

相关阅读