SpringBoot3整合Swagger
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、SpringBoot3整合Swagger3出现的问题
- 二、openapi3
- 总结
前言
之前一直使用SpringBoot2与Swagger2,所以感觉都很顺利,因网上资源也比较多问题不大。
但是自从更新idea2024、jdk17之后,很多依赖都是比较新的版本,之前的很多东西需要去适应新版本就会出现很多bug,网上的很多办法不好用,只好在改好bug之后记录一下,以便大家一起学习。
一、SpringBoot3整合Swagger3出现的问题
我用的版本是
SpringBoot:3.4.4
springfox 引入的依赖:
io.springfox springfox-boot-starter 3.0.0
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依赖:
org.springdoc springdoc-openapi-starter-webmvc-ui 2.0.4
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")); }
访问成功
总结
提示
参考:Springdoc-OpenAPI 使用教程-CSDN博客
Spring Boot 3.x 引入springdoc-openapi (内置Swagger UI、webmvc-api)_springdoc-openapi-starter-webmvc-ui-CSDN博客
Java21 + SpringBoot3整合springdoc-openapi,自动生成在线接口文档,支持SpringSecurity和JWT认证方式 - 程序员偏安 - 博客园 (cnblogs.com)