非Spring Boot的Spring MVC项目如何配置Spring Boot Actuator运行在独立端口
解决方案
核心问题原因
你当前配置的核心问题是未为Actuator初始化独立的Web上下文,Actuator和主Spring MVC应用共用同一个Servlet容器实例,所以自定义的独立端口配置不会生效。
具体修正步骤
第一步:调整依赖
补充和Actuator版本一致的Spring Boot Web Starter依赖,避免版本不兼容问题:
group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '1.5.4.RELEASE'你当前使用的Spring MVC 4.3.9和Spring Boot 1.5.4版本天然兼容,无需调整原有依赖版本。
第二步:修正配置类
- 删除
MvcConfig类上的@ManagementContextConfiguration注解,该注解是Actuator独立上下文的专属标记,不能用于主MVC配置类。 - 清空
ActuatorConfig类里手动声明的EmbeddedServletContainerFactory、ManagementServerProperties两个Bean,也不需要手动Import两个Endpoint自动配置类,Spring Boot会自动完成加载。 - 保留主配置类上的
@EnableAutoConfiguration的排除规则和@EnableWebMvc注解,不需要调整。
- 删除
第三步:添加端口配置
在项目的
application.properties(或application.yml)中添加以下配置:# 主业务服务端口,按需替换为你原来的业务端口 server.port=8080 # Actuator独立监听端口 management.port=9091 # Actuator访问根路径,和你原来的配置保持一致 management.context-path=/actuator # 测试阶段可关闭安全校验,生产环境按需开启权限控制 management.security.enabled=false
特殊场景说明
如果你当前的项目是打包为War包部署到外部Tomcat运行,而非使用Spring Boot嵌入式容器启动,那么本身就不支持Actuator独立端口配置——外部Tomcat默认只会监听一个端口,这种场景只能使用同一端口加不同路径区分业务接口和Actuator接口。
验证方式
项目启动后,控制台会打印两行端口启动日志,分别对应主业务端口和Actuator的9091端口,直接访问http://localhost:9091/actuator/health即可获取Actuator指标数据,业务接口仍走原端口正常访问。
内容的提问来源于stack exchange,提问作者SnejOK
相关产品推荐
相关产品推荐

