You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 3.0.6:如何为控制器与Actuator配置不同上下文路径

解决Spring Boot 3.0.6中控制器与Actuator路径分离的问题

问题原因

在Spring Boot 3.x版本中,server.servlet.context-path是全局的Servlet上下文配置,所有Servlet(包括Actuator的端点)都会继承这个路径前缀,因此当你设置server.servlet.context-path=/network后,Actuator的路径会自动叠加为/network/actuator。而旧版本的management.server.servlet.context-path属性在3.x中已被废弃,无法再独立设置Actuator的上下文路径。

解决方案

方案一:全局配置控制器路径前缀(推荐)

无需给每个控制器手动添加@RequestMapping("/network"),通过Spring MVC的全局配置统一给所有控制器添加路径前缀,同时让Actuator路径不受影响:

  1. 创建WebMvc配置类:
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {
        // 为所有标注@RestController或@Controller的控制器添加/network前缀
        configurer.addPathPrefix("/network", 
            HandlerTypePredicate.forAnnotation(RestController.class)
                .or(HandlerTypePredicate.forAnnotation(Controller.class)));
    }
}
  1. 修改application.properties配置:
# 仅保留Actuator的路径配置,无需设置server.servlet.context-path
management.endpoints.web.base-path=/actuator

这样所有业务控制器的路径都会自动以/network开头,而Actuator的路径保持为/actuator,完全符合需求。

方案二:让Actuator使用独立端口(可选)

如果允许Actuator与主应用使用不同端口,可以通过以下配置实现路径分离:

# 主应用控制器上下文路径
server.servlet.context-path=/network
# Actuator独立端口
management.server.port=8081
# Actuator路径
management.server.base-path=/actuator

此时主应用控制器访问路径为http://localhost:8080/network/*,Actuator访问路径为http://localhost:8081/actuator/*。

内容的提问来源于stack exchange,提问作者Erik Pragt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 20:14:59