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


    手把手教你解决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.servletgroupId>
        <artifactId>jakarta.servlet-apiartifactId>
        <version>6.0.0version>
        <scope>providedscope>
    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
    
    <dependency>
        <groupId>io.springfoxgroupId>
        <artifactId>springfox-swagger2artifactId>
        <version>2.9.2version>
    dependency>
    
    <dependency>
        <groupId>io.springfoxgroupId>
        <artifactId>springfox-swagger-uiartifactId>
        <version>2.9.2version>
    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
  • 相关阅读:
    sshpiper 在 Kubernetes 上的应用
    Vue.js2+Cesium1.103.0 十四、绘制视锥,并可实时调整视锥姿态
    css:button实现el-radio效果
    ROS机器人应用(4)—— 查看里程计、IMU 话题信息
    React 基础学习
    “优化”城市出行体验——山海鲸智慧交通解决方案
    2022-11-21 vue3有哪些新增特性?
    一文总结MySQL的指令是如何工作的
    开源AI漫画生成器-AI Comic Factory
    【vue2高德地图api】05-关于公交线路的案例实战
  • 原文地址:https://www.cnblogs.com/luckyzthao/p/18285608