springBoot项目有几个端口

背景

项目中需要做成功率告警,涉及到了Prometheus的监控,突然想到,为什么管理端口是36666,业务端口是8080,又自此延伸出,为什么自己写的业务接口都走了自己配置的server.port的端口,而管理接口都是走36666端口

学习

带着问题去问AI

问:springBoot是怎么划分,部分接口使用8080端口访问,部分接口使用36666端口访问的

答:Spring Boot 实现"部分接口走 8080,部分接口走 36666"的核心机制是 Spring Boot Actuator 的管理端口分离(Management Port separation)这种划分不是手动配置的,而是基于应用上下文(Application Context)划分的。

1、核心机制

:两个独立的 Web 容器。(没想到吧,我原来一直以为一个项目只有一个容器)

当你在配置中设置了 management.server.port 与 server.port 不同时,Spring Boot 会在内部启动两个独立的 Web 服务器(Tomcat/Undertow):

  1. 主服务器 (Main Server)
    • 端口:8080 (由启动脚本 --server.port=8080 指定)
    • 内容:承载所有的业务接口。即你项目中写的所有的 @Controller, @RestController,以及普通的 Servlet 和 Filter。
    • 用途:处理正常的业务交易、支付请求等。
  2. 管理服务器 (Management Server)
    • 端口:36666 (由 YAML 中 management.server.port: 36666 指定)
    • 内容:承载 Spring Boot Actuator 端点。例如 /health (健康检查), /info, /metrics (指标监控), /loggers (日志调整) 等。
    • 用途:用于运维监控、甚至优雅停机。

2、如何决定接口去哪个端口

  • 去36666端口的接口:
    只有 Actuator 相关的 Endpoint 。(只有那些专门实现了 Actuator @Endpoint 接口或者被标记为管理端点的组件才会出现在这个端口)
    • 如果你引用的包中的接口基于 Actuator 开发的(实现了 @Endpoint 注解),那么它的接口就会自动出现在 36666 端口。
    • 项目本身配置的监控路径,如 /_manage/health。
  • 去8080端口的接口:
    所有普通的 Bean,代码里写的 public class XxxController 默认都会挂载到 8080。

总结

springBoot项目根据应用上下文和配置文件中的端口是否一致来创建容器,只有Actuator相关的会使用配置文件的management.server.port端口访问;其他的与Actuator无关的接口,都是配置文件中的server.port端口访问!这是spring帮我们实现的,无需开发人员手动设置。但关于监控、健康检查这一部分,还有很多内容值得我们深入学习、了解。

相关推荐
JAVA面经实录9174 分钟前
Java多线程并发高频面试100题(完整版·含答案·背诵版)
java·开发语言·面试
XiYang-DING8 分钟前
【Java EE】TCP—流量控制和拥塞控制
java·tcp/ip·java-ee
用户67570498850218 分钟前
Celery 太重了?这可能是你一直在找的 asyncio 任务队列
后端·python·消息队列
Cloud_Shy61819 分钟前
Python 数据分析基础入门:《Excel Python:飞速搞定数据分析与处理》学习笔记系列(第十一章 Python 包跟踪器 下篇)
前端·后端·python·数据分析·excel
BIG_PEI27 分钟前
检查并安装Redis
java
大貔貅喝啤酒29 分钟前
基于Windows下载安装Android Studio 3.3.2版本教程(2026详细图文版)
android·java·windows·android studio
奋斗的小方31 分钟前
Java基础篇09:项目实战
java·开发语言
海兰32 分钟前
【第21篇-续】graph-Stream-Node改造为适配openAI模型示例
java·人工智能·spring boot·spring·spring ai
vKd0Ff21L34 分钟前
如何在Dev-C++中设置TDM-GCC为默认编译器第九十一篇
java·jvm·c++
武子康36 分钟前
Java-221 RocketMQ 消息存储核心原理:CommitLog、ConsumerQueue、IndexFile 与消息过滤机制
java·大数据·分布式·消息队列·rabbitmq·rocketmq·java-rocketmq