springboot 3.x 版本以上引入swagger3版本报错

781 阅读1分钟

问题说明

因为springboot3.x以上,把javax.servlet.http.HttpServletRequest更换为jakarta.servlet.http.HttpServletRequest

而swagger3底层是依赖于javax依赖包的,而springboot3.x版本,底层依赖包改为了jakarta,所以一启动就会报错:

java.lang.ClassNotFoundException: javax.servlet.http.HttpServletRequest

解决问题

导入Maven依赖

<!-- 官方建议是springdoc替代springfox-->
<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-api</artifactId>
    <version>2.1.0</version>
</dependency>
<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.1.0</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

可以使用knife4j增强swagger

导入Maven

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
    <version>4.1.0</version>
</dependency>

application.yml

server:
  port: 8080
  servlet:
    context-path: /api  #我这里增加了前缀路径/api
  springdoc:
    swagger-ui:
      path: /swagger-ui.html
      operations-sorter: alpha
    api-docs:
      path: /v3/api-docs
      group-configs:
        - group: 'default'
          paths-to-match: '/**'
          packages-to-scan: com.yupi.usercenter
logging:
  level:
    com.yupi: debug
# knife4j的增强配置,不需要增强可以不配
knife4j:
  enable: true
  setting:
    language: zh_cn

输入 地址:端口/doc.html 即可进入接口文档

image.png