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

cnblogs 2024-07-05 13:39:00 阅读 84

手把手教你解决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也不用这个.

<code><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

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

<code>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有版本冲突问题,需要加入以下配置

<code>spring.mvc.pathmatch.matching-strategy=ant_path_matcher

  1. 修改pop.xml

<code><!-- 添加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目录下新建一个配置类

<code>@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


声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。