多模块SpringBoot应用Actuator端点不可用及OpenAPI集成问题
问题解决:Spring Boot Actuator 403错误与OpenAPI端点不显示问题
一、修复Actuator 403权限错误
1. 更新配置文件,替换废弃配置
Spring Boot 2.6.x中management.security.enabled已被废弃,需调整为端点暴露配置:
# 删除废弃配置 # management.security.enabled = false # 暴露所有Actuator端点(可按需指定,比如仅开放info、health) management.endpoints.web.exposure.include=* # 若你的API前缀为/api,需同步设置Actuator的上下文路径匹配前缀,否则保持默认/actuator management.server.servlet.context-path=${apiPrefix}
2. 修正Spring Security规则
确保权限匹配规则顺序正确(从上到下匹配),且路径对应实际Actuator地址:
// 假设apiPrefix值为"/api",则Actuator路径为/api/actuator/** .antMatchers(apiPrefix + "/actuator/**").permitAll() // 若未设置management.server.servlet.context-path,则保留此行,否则可删除 // .antMatchers("/actuator/**").permitAll() // 其他需要认证的规则放在后面 .anyRequest().authenticated()
二、让Actuator端点显示在OpenAPI V3面板
1. 添加兼容的springdoc依赖
Spring Boot 2.6.x需搭配对应版本的springdoc,在application模块的pom.xml中添加:
<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>1.6.9</version> </dependency>
2. 完善springdoc配置
在application.properties中补充:
springdoc.show-actuator=true # 配置API文档基础路径 springdoc.api-docs.path=/v3/api-docs # 配置Swagger UI访问路径 springdoc.swagger-ui.path=/swagger-ui.html # 若Actuator使用了自定义上下文路径,需指定给springdoc # springdoc.actuator.path=${apiPrefix}/actuator
三、实现自定义info端点显示应用版本
1. 确保build-info插件生效
你的spring-boot-maven-plugin已配置build-info目标,执行mvn clean package后,构建生成的版本信息会自动被Actuator的info端点读取。
2. 可选:自定义info内容
若需添加额外自定义信息,可创建InfoContributor实现类:
@Component public class CustomInfoContributor implements InfoContributor { @Value("${project.version}") private String appVersion; @Override public void contribute(Info.Builder builder) { builder.withDetail("application", Map.of( "version", appVersion, "type", "multi-module-springboot" )); } }
启动后访问${apiPrefix}/actuator/info(或/actuator/info)即可查看包含版本的自定义信息。
内容的提问来源于stack exchange,提问作者2dor
相关产品推荐
相关产品推荐

