Spring Boot 3.2.5集成Swagger3访问swagger-ui遇白标错误求助
问题描述
我正在学习在Spring Boot 3.2.5中使用Swagger3,目前可正常访问http://localhost:8080/rad并获取测试数据,但访问http://localhost:8080/swagger-ui/index.html时出现Whitelabel Error Page。
相关配置信息
依赖配置(pom.xml)
<dependencies> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.32</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> </dependency> </dependencies>
启动类代码
@SpringBootApplication @EnableOpenApi public class appserver3 { public static void main(String[] args) { SpringApplication.run(appserver3.class,args); } }
Swagger配置类代码
@Configuration public class swagger_config { @Bean public Docket apiconfig(){ return new Docket(DocumentationType.OAS_30) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo(){ return new ApiInfoBuilder() .title("Fingers") .description("fingers") .contact(new Contact("1", "2", "3")) .version("1.0") .build(); } }
application.yml配置
Spring: mvc: pathmatch: matching-strategy: ant_path_matcher
解决方案
核心问题是SpringFox 3.0.0 完全不兼容 Spring Boot 3.x 版本:SpringFox最后一个稳定版本停留在2020年,适配的是Spring Boot 2.x的Java EE规范,而Spring Boot 3.x已切换为Jakarta EE规范,两者依赖的基础包完全不匹配,导致Swagger UI无法正常加载。
具体解决步骤:
- 替换Swagger依赖:移除SpringFox,改用适配Spring Boot 3.x的SpringDoc OpenAPI(官方推荐替代方案)
修改pom.xml依赖:<dependencies> <!-- SpringDoc OpenAPI 3 Starter(适配Spring Boot 3.x) --> <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>2.2.0</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.32</version> </dependency> <!-- 移除javax.servlet-api,Spring Boot 3.x自带Jakarta Servlet API --> </dependencies> - 清理旧配置:删除手动编写的
swagger_config类,SpringDoc会自动完成基础配置 - 调整启动类:移除
@EnableOpenApi注解,SpringDoc无需额外启用注解
修改后启动类:@SpringBootApplication public class appserver3 { public static void main(String[] args) { SpringApplication.run(appserver3.class,args); } } - 访问Swagger UI:SpringDoc默认访问地址为
http://localhost:8080/swagger-ui.html,http://localhost:8080/swagger-ui/index.html也可正常访问 - 可选自定义配置:如果需要定制API文档信息,可添加SpringDoc配置类:
@Configuration public class SpringDocConfig { @Bean public OpenAPI customOpenAPI() { return new OpenAPI() .info(new Info() .title("Fingers") .description("fingers") .contact(new Contact().name("1").url("2").email("3")) .version("1.0")); } }
内容的提问来源于stack exchange,提问作者M18 3839
相关产品推荐
相关产品推荐

