手把手教你解决spring boot导入swagger2版本冲突问题,刘老师教编程

spring,boot,swagger2 · 浏览次数 : 22

小编点评

本文将指导您如何解决在使用Spring Boot 3时遇到的Swagger 2版本冲突问题。由于Spring Boot 3与Swagger 2不兼容,因此需要使用其他与Spring Boot 3兼容的API文档工具,如Springdoc或JavaDoc。 步骤如下: 1. 将Spring Boot的版本降至3.0.1或更低。但请注意,这可能导致您无法使用Spring Boot 3的一些新功能。 2. 在pom.xml文件中添加以下依赖以替换Swagger 2依赖: ```xml jakarta.servlet jakarta.servlet-api 6.0.0 provided ``` 3. 如果您使用的是Spring Boot 3.0.1或更高版本,您还需要修改配置文件。在config目录下创建一个名为SwaggerConfig的配置类,并启用Swagger2功能: ```java @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com")) .paths(PathSelectors.any()).build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("演示项目API") .description("学习Swagger2的演示项目") .version("1.0") .build(); } } ``` 4. 在application.properties文件中添加以下配置以更改路径匹配策略: ``` spring.mvc.pathmatch.matching-strategy=ant_path_matcher ``` 完成上述步骤后,您应该可以正常使用Swagger UI。只需访问 http://localhost:8080/swagger-ui.html 即可查看API文档。 总结:本文介绍了如何在Spring Boot 3中解决Swagger 2版本冲突问题。通过降低Spring Boot版本、添加相关依赖和修改配置文件,您可以顺利地使用Swagger 2。

正文

手把手教你解决spring boot导入swagger2版本冲突问题

本文仅为个人理解,欢迎大家批评指错

首先Spring Boot 3 和 Swagger 2 不兼容。在 Spring Boot 3 中,应该使用 Springdoc 或其他与 Spring Boot 3 兼容的 API 文档工具来替代 Swagger 2。
Swagger 2 的依赖底层使用的是 javax 依赖包,而 Spring Boot 3 使用的是 Jakarta 依赖包。一般来说,可以将 Spring Boot 的版本降到 3.0.1 以下来解决这个问题,但如果想要使用 3.0.1 版本以上的 Spring Boot,启动时就会出现报错。

  1. 去pop.xml查看你springframework的版本,如果你已经是Spring boot3了,像我这里是当前的最新版3.3.1,那就改成2.7.2,改完之后点击右上角m形状的刷新按钮
    alt text

  2. 改完之后使用了HttpServletRequest和HttpServletResponse的类应该都会报错,也是因为我之前提到的Swagger 2 的依赖底层使用的是 javax 依赖包,而 Spring Boot 3 使用的是 Jakarta 依赖包。
    alt text

此时不用导入这个依赖,加入了也没用spring boot2也不用这个.

<dependency>
    <groupId>jakarta.servlet</groupId>
    <artifactId>jakarta.servlet-api</artifactId>
    <version>6.0.0</version>
    <scope>provided</scope>
</dependency>

来个错误演示,加了之后的效果
alt text

这是因为Swagger 2 的依赖底层使用的是 javax 依赖包
alt text

正确做法加入这两个包替换原来的包就行了,很简单

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
  1. 在添加Swagger依赖之前先运行一下,如果你没报错但是运行失败,那就是java版本太高了,像我这里就是21
    alt text
    alt text

  2. 剩下就简单了,修改application.properties

因为Spring Boot 2.6.X后与Swagger有版本冲突问题,需要加入以下配置

spring.mvc.pathmatch.matching-strategy=ant_path_matcher
  1. 修改pop.xml
<!-- 添加swagger2相关功能-->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<!-- 添加swagger-ui相关功能-->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>
  1. 在config目录下新建一个配置类
@Configuration  //告诉Spring容器这是一个配置类
@EnableSwagger2 //开启Swagger的功能
public class SwaggerConfig {
    
    @Bean
    public Docket createRestApi(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com"))//com包下的所有AIP都交给Swagger2管理
                .paths(PathSelectors.any()).build();
    }

    /**
     * 这里为API文档显示的信息
     */
    private ApiInfo apiInfo(){
        return new ApiInfoBuilder()
                .title("演示项目API")
                .description("学习Swagger2的演示项目")
                .version("1.0")
                .build();
    }

}

成功运行
alt text

  1. 最后一步输入网址即可http://localhost:8080/swagger-ui.html

与手把手教你解决spring boot导入swagger2版本冲突问题,刘老师教编程相似的内容:

手把手教你解决spring boot导入swagger2版本冲突问题,刘老师教编程

手把手教你解决spring boot导入swagger2版本冲突问题 本文仅为个人理解,欢迎大家批评指错 首先Spring Boot 3 和 Swagger 2 不兼容。在 Spring Boot 3 中,应该使用 Springdoc 或其他与 Spring Boot 3 兼容的 API 文档工具来

6个实例带你解读TinyVue 组件库跨框架技术

本文分享自华为云社区《6个实例带你解读TinyVue 组件库跨框架技术》,作者: 华为云社区精选。 在DTSE Tech Talk 《 手把手教你实现mini版TinyVue组件库 》的主题直播中,华为云前端开发DTSE技术布道师阿健老师给开发者们展开了组件库跨框架的讨论,同时针对TinyVue组件

手把手教你写一个JSON在线解析的前端网站1

前言 作为一名Android开发,经常要跟后端同事联调接口,那么总避免不了要格式化接口返回值,将其转换为清晰直观高亮的UI样式以及折叠部分内容,方便我们查看定位关键的信息。 一直以来都是打开Google 搜索json格式化关键字,然后选择Google推荐的前三名的网址,比如 bejson网站: ht

手把手教你实现法玛三因子模型

更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流。 关于法玛三因子模型 法玛三因子模型(Fama-French Three-Factor Model)是一种资本资产定价模型(Capital Asset Pricing Model,CAPM)的扩展,用于解释

AI实战 | 手把手带你打造校园生活助手

在文章中,我展示了手把手的教程和小雨校园生活助手的功能。我强调了插件开发的重要性,以及数据库和变量的使用。工作流的使用也得到了详细解释,包括节假日信息整合和课程查询。最后,我分享了我的开场白生成方法,强调了前期调试的重要性。通过这篇文章,希望大家能够更深入地了解扣子助手的功能和实现方式。我将继续努力...

手把手教你搭建Docker私有仓库Harbor

1、什么是Docker私有仓库 Docker私有仓库是用于存储和管理Docker镜像的私有存储库。Docker默认会有一个公共的仓库Docker Hub,而与Docker Hub不同,私有仓库是受限访问的,只有授权用户才能够上传、下载和管理其中的镜像。这种私有仓库可以部署在本地云环境中,用于组织内部

[转帖]手把手教你安装openGauss 3.1.0

手把手教你安装openGauss 3.1.0 目录 前言 一、安装包的下载 1、centos 7.6的下载 2、openEuler 20.03LTS的下载 3、openGauss安装包的下载 二、安装环境的准备 1、硬件环境要求 2、软件环境要求 3、软件依赖要求 4、关闭操作系统防火墙 6、设置操

手把手教你调用5个公共API获取数字货币市场数据(文章内附源码)

更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流。 获取数字货币的历史行情数据可以通过一些专门的数字货币数据API或者第三方数据服务来实现。以下是一些获取数字货币历史行情数据的方法: 1 CoinGecko API CoinGecko是一个数字货币市场数据

手把手教你如何在报表中查询数据

每周一个报表小技巧:如何在报表中引入数据筛选功能 >摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:[葡萄城官网](https://www.grapecity.com.cn/),葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 # 前言篇 在当今信息爆炸的时代,面对海量的

手把手教你一套完善且高效的k8s离线部署方案

作者:郝建伟 背景 面对更多项目现场交付,偶而会遇到客户环境不具备公网条件,完全内网部署,这就需要有一套完善且高效的离线部署方案。 系统资源 | 编号 | 主机名称 | IP | 资源类型 | CPU | 内存 | 磁盘 | | -- | | | | | | | | 01 | k8s-master1