提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
之前一直使用SpringBoot2与Swagger2,所以感觉都很顺利,因网上资源也比较多问题不大。
但是自从更新idea2024、jdk17之后,很多依赖都是比较新的版本,之前的很多东西需要去适应新版本就会出现很多bug,网上的很多办法不好用,只好在改好bug之后记录一下,以便大家一起学习。
一、SpringBoot3整合Swagger3出现的问题
我用的版本是
SpringBoot:3.4.4
springfox 引入的依赖:
<!--swagger -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
yml配置
#集成Swagger高版本启动异常配置,低版本可以不配置
spring:
mvc:
pathmatch:
matching-strategy: ANT_PATH_MATCHER
启动类
@EnableOpenApi @EnableSwagger2 swagger3启动注解
swagger配置类
网上有很多自己取,启动成功以后项目启动正常,但是swagger访问页面一直404
在网上看了很多方法都不可用
只要是无法加载到swagger-ui的静态资源,页面报错
项目编译没有问题,但是启动运行的时候报错 javax.servlet.http.HttpServletRequest ClassNotFoundException 异常。
页面一直循环弹窗。头大~
这是因为 SpringFox3.0.0 底层有 Swagger2 和 Swagger3 两套依赖,其中 Swagger2 底层依赖 javax 模块,但是在 SpringBoox3 的版本中已经彻底移除了 javax 模块,改为使用 jakarta ,所以才会报这个错误。
参考:SpringBoot 3.0 升级之 Swagger 升级_spring boot 3使用swagger-CSDN博客
二、openapi3
引入依赖
删除之前的Springfox-3.0.0 添加openAip3依赖:
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.0.4</version>
</dependency>
yml配置
# swagger-ui custom path
springdoc:
api-docs:
enabled: true # 开启OpenApi接口
swagger-ui:
enabled: true # 开启swagger界面,依赖OpenApi,需要OpenApi同时开启
path: /index.html # 自定义路径,默认为"/swagger-ui/index.html"
编写Swagger配置类
@Configuration
class Swagger2Utils{
@Bean
public OpenAPI springOpenAPI() {
// 访问路径:http://localhost:8015/swagger-ui/index.html
return new OpenAPI().info(new Info()
.title("测试文档")
.contact(new Contact())
.description("测试专用信息管理平台提供的 RESTful API")
.version("v1.0.0")
.license(new License().name("测试版本1.0").url("http://springdoc.org")))
.externalDocs(new ExternalDocumentation()
.description("测试接口外部文档")
.url("https://springshop.wiki.github.org/docs"));
}
访问成功
总结
提示