手把手教你解决spring boot导入swagger2版本冲突问题,刘老师教编程-kb88凯时官网登录

来自:
时间:2024-07-06
阅读:

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

首先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形状的刷新按钮
    手把手教你解决spring boot导入swagger2版本冲突问题,刘老师教编程

  2. 改完之后使用了httpservletrequest和httpservletresponse的类应该都会报错,也是因为我之前提到的swagger 2 的依赖底层使用的是 javax 依赖包,而 spring boot 3 使用的是 jakarta 依赖包。
    手把手教你解决spring boot导入swagger2版本冲突问题,刘老师教编程

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


    jakarta.servlet
    jakarta.servlet-api
    6.0.0
    provided

来个错误演示,加了之后的效果
手把手教你解决spring boot导入swagger2版本冲突问题,刘老师教编程

这是因为swagger 2 的依赖底层使用的是 javax 依赖包
手把手教你解决spring boot导入swagger2版本冲突问题,刘老师教编程

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

import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;
  1. 在添加swagger依赖之前先运行一下,如果你没报错但是运行失败,那就是java版本太高了,像我这里就是21
    手把手教你解决spring boot导入swagger2版本冲突问题,刘老师教编程
    手把手教你解决spring boot导入swagger2版本冲突问题,刘老师教编程

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

因为spring boot 2.6.x后与swagger有版本冲突问题,需要加入以下配置

spring.mvc.pathmatch.matching-strategy=ant_path_matcher
  1. 修改pop.xml


    io.springfox
    springfox-swagger2
    2.9.2


    io.springfox
    springfox-swagger-ui
    2.9.2

  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();
    }
}

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

  1. 最后一步输入网址即可http://localhost:8080/swagger-ui.html
返回顶部
顶部
网站地图