当前位置: 首页 > 知识库问答 >
问题:

java - intellj idea是如何知道springboot的端口号的?

谭宏盛
2024-02-15

在使用intellj idea Ultimate版本时,当启动一个springboot项目后,idea会自动显示出来端口号。
image.png
当我在配置文件中设置server.port=0,并把输出日志也关闭了,idea仍然可以识别出端口号。跟据网上的说法是从jmx中拿的,我在idea的运行配置中禁用jmx端点后,确实识别不出端口号了。但我用jconsole查看启动的springboot项目中的所有属性,没有任何一个值是和启动端口号一样的。
image.png
所有我想知道这个原理是什么。

共有1个答案

瞿宏儒
2024-02-15

IntelliJ IDEA 知道 Spring Boot 的端口号是通过以下方式实现的:

  1. 读取配置文件:Spring Boot 在启动时会加载配置文件(通常是 application.propertiesapplication.yml),其中可以设置 server.port 属性来指定端口号。IntelliJ IDEA 可以读取这个配置文件,获取端口号信息。
  2. JMX(Java Management Extensions):即使你在配置文件中设置 server.port=0,IntelliJ IDEA 仍然可以通过 JMX 来获取实际的端口号。JMX 是一个用于管理和监控 Java 应用程序的规范。Spring Boot 在启动时,会注册一些 JMX MBeans(ManagedBeans),其中就包含了实际的端口号信息。IntelliJ IDEA 通过连接到 Spring Boot 应用程序的 JMX 端点,可以获取这些 MBean 的属性,包括端口号。

你禁用了 JMX 端点后,IntelliJ IDEA 就无法通过 JMX 获取端口号信息,因此无法显示正确的端口号了。

  1. 其他机制:除了以上两种方式,IntelliJ IDEA 还可能通过其他机制来获取端口号信息。例如,它可能通过分析 Spring Boot 应用程序的日志文件、网络连接等来推断出端口号。

总之,IntelliJ IDEA 知道 Spring Boot 的端口号是通过多种机制综合实现的,其中 JMX 是其中的一种重要方式。

 类似资料:
  • 我下载了詹金斯。war文件并运行命令java-jar-jenkins。我的war文件目录中的war。它在默认端口8080上启动了Jenkins,但现在我想更改Jenkins的默认端口,因为我正在端口8080上运行tomcat。我没有找到任何詹金斯。my C中的xml文件:/User/Username/。詹金斯文件夹。在这种情况下,如何更改Jenkins的默认端口?

  • Pyspark shell使用Py4J启动Java网关,然后与它对话并将python SparkContext发送到Java网关。 但是,我怎么知道Spark上下文打开的是哪个端口呢?PySpark如何决定使用哪个端口来创建Java gateway Spark上下文? 附加问题: 谁启动Py4j java进程?

  • 本文向大家介绍请问MySQL的端口号是多少,如何修改这个端口号相关面试题,主要包含被问及请问MySQL的端口号是多少,如何修改这个端口号时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 查看端口号: 使用命令show global variables like 'port';查看端口号 ,mysql的默认端口是3306。(补充:sqlserver默认端口号为:1433;oracle默认端口号

  • 在ElasticSearch留档中指定了以下关于http.port配置: http。港口城市 用于绑定传入HTTP请求的端口。接受单个值或范围。如果指定了范围,则节点将绑定到该范围中的第一个可用端口。 默认为9200-9300。 假设Elasticsearch自动选择端口9202,因为9200已经在使用中。Java客户端应用程序如何知道选择了哪个端口以及必须使用哪个端口来创建RestHighLev

  • 我正在使用MASM 14.0进行组装,我与下面代码的输出混淆。 这两个算术运算都是在无符号整数255和127上完成的。 然而,CPU将第一个操作255视为无符号整数,并设置进位标志,当将1添加到无符号255时会出现这种情况。 完整的状态标志是CF=1 SF=0 ZF=1 OF=0 AF=1 PF=1,eax为0 但是,第二个操作在设置溢出标志时将127视为有符号整数,如果将127加1,则会发生溢出

  • 我正在尝试运行以下命令将hpi文件打包到目标文件夹中 并观察到下面的错误消息,该消息表示该端口已被使用。我只是试图手动终止端口,但我没有这样做的特权。是否可以通过作为参数-Dhpi传递来自定义端口号。port=xxx类似于这样的吗? 例外: JAVA网BindException:地址已在使用中:在sun处绑定。尼奥。中国网。在sun的bind0(本机方法)。尼奥。中国网。在sun上绑定(Net.j