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

打印 上一主题 下一主题

主题 876|帖子 876|积分 2628

手把手教你办理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,启动时就会出现报错。

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

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

此时不用导入这个依赖,加入了也没用spring boot2也不用这个.
  1. <dependency>
  2.     <groupId>jakarta.servlet</groupId>
  3.     <artifactId>jakarta.servlet-api</artifactId>
  4.     <version>6.0.0</version>
  5.     <scope>provided</scope>
  6. </dependency>
复制代码
来个错误演示,加了之后的效果

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

准确做法加入这两个包更换原来的包就行了,很简单
  1. import javax.servlet.http.HttpServletRequest;
  2. import javax.servlet.http.HttpServletResponse;
复制代码

  • 在添加Swagger依赖之前先运行一下,如果你没报错但是运行失败,那就是java版本太高了,像我这里就是21


  • 剩下就简单了,修改application.properties
因为Spring Boot 2.6.X后与Swagger有版本冲突问题,必要加入以下设置
  1. spring.mvc.pathmatch.matching-strategy=ant_path_matcher
复制代码

  • 修改pop.xml
  1. <dependency>
  2.     <groupId>io.springfox</groupId>
  3.     <artifactId>springfox-swagger2</artifactId>
  4.     <version>2.9.2</version>
  5. </dependency>
  6. <dependency>
  7.     <groupId>io.springfox</groupId>
  8.     <artifactId>springfox-swagger-ui</artifactId>
  9.     <version>2.9.2</version>
  10. </dependency>
复制代码

  • 在config目录下新建一个设置类
  1. @Configuration  //告诉Spring容器这是一个配置类
  2. @EnableSwagger2 //开启Swagger的功能
  3. public class SwaggerConfig {
  4.    
  5.     @Bean
  6.     public Docket createRestApi(){
  7.         return new Docket(DocumentationType.SWAGGER_2)
  8.                 .apiInfo(apiInfo())
  9.                 .select()
  10.                 .apis(RequestHandlerSelectors.basePackage("com"))//com包下的所有AIP都交给Swagger2管理
  11.                 .paths(PathSelectors.any()).build();
  12.     }
  13.     /**
  14.      * 这里为API文档显示的信息
  15.      */
  16.     private ApiInfo apiInfo(){
  17.         return new ApiInfoBuilder()
  18.                 .title("演示项目API")
  19.                 .description("学习Swagger2的演示项目")
  20.                 .version("1.0")
  21.                 .build();
  22.     }
  23. }
复制代码
乐成运行


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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

不到断气不罢休

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表