You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Spring Boot 2.0.0.RELEASE中Actuator端点访问404问题求助

解决Spring Boot 2.0 Actuator端点404问题

这个问题我之前帮不少开发者排查过,核心原因是Spring Boot 2.x对Actuator组件做了大幅调整,和1.x版本的路径规则、默认配置完全不一样。给你一步步拆解解决:

1. 先修正端点访问路径

Spring Boot 2.x默认把Actuator端点的前缀从1.x的/application改成了/actuator,所以你之前的请求路径全部需要调整:

  • /application/mappings → 现在访问/actuator/mappings
  • /application/autoconfig → 2.x里这个端点改名为/actuator/conditions,别再用旧名称了
  • /application/beans → 现在/actuator/beans
  • /application/configprops → 现在/actuator/configprops

2. 配置端点暴露规则

2.x版本默认只对外暴露healthinfo两个基础端点,像mappings、beans这类进阶端点需要手动开启暴露。你需要在配置文件里添加规则:

用application.properties配置:

# 按需暴露指定端点,多个用逗号分隔
management.endpoints.web.exposure.include=mappings,conditions,beans,configprops
# 如果想一次性暴露所有端点,可以用*
# management.endpoints.web.exposure.include=*

用application.yml配置:

management:
  endpoints:
    web:
      exposure:
        include: mappings,conditions,beans,configprops
        # include: '*'  # 暴露所有端点的写法

3. 确认Actuator依赖是否正确

务必检查你的pom.xml里的依赖是Spring Boot 2.x的正确版本:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    <!-- 版本号可以省略,因为Spring Boot父pom会自动管理 -->
    <version>2.0.0.RELEASE</version>
</dependency>

注意:旧版本的artifactId是spring-boot-actuator,2.x已经统一改为spring-boot-starter-actuator,用错依赖会直接导致端点无法加载。

4. (可选)恢复/application前缀

如果你习惯用原来的/application作为前缀,可以通过配置修改端点的基础路径:

application.properties:

management.endpoints.web.base-path=/application

application.yml:

management:
  endpoints:
    web:
      base-path: /application

配置后,你就能继续用/application/mappings这类旧路径访问了。

5. 排查Spring Security拦截(如果项目用了安全框架)

如果你的项目集成了Spring Security,它可能会默认拦截Actuator端点的请求。需要在Security配置类里添加放行规则:

import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                // 允许所有请求访问Actuator端点,也可以根据需求配置权限校验
                .antMatchers("/actuator/**").permitAll()
                .anyRequest().authenticated();
    }
}

按照上面的步骤调整后,你的Actuator端点应该就能正常访问了。

内容的提问来源于stack exchange,提问作者Mark Smith

火山引擎 最新活动