问题说明
因为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 即可进入接口文档