Spring Boot 3 中集成 Swagger 问题:Type javax.servlet.http.HttpServletRequest not present

问题与处理策略

问题描述
<dependency>
    <groupId>io.springfoxgroupId>
    <artifactId>springfox-swagger2artifactId>
    <version>3.0.0version>
dependency>

<dependency>
    <groupId>io.springfoxgroupId>
    <artifactId>springfox-swagger-uiartifactId>
    <version>3.0.0version>
dependency>
  • 在 Spring Boot 3 中集成 Swagger 时,报如下错误
java.lang.TypeNotPresentException: Type javax.servlet.http.HttpServletRequest not present
# 翻译

java.lang.TypeNotPresentException 异常:javax.servlet.http。HttpServletRequest 不存在
问题原因
  1. 这是因为 Spring Boot 3 与 Swagger 存在兼容性问题

  2. Spring Boot 3 基于 Jakarta EE 9+,而 Jakarta EE 9 将 javax.* 命名空间迁移到了 jakarta.* 命名空间

  3. Swagger 的某些版本仍然依赖于 javax.servlet,因此会出现这样的错误

处理策略
  1. 移除掉原先引入的依赖
<dependency>
    <groupId>io.springfoxgroupId>
    <artifactId>springfox-swagger2artifactId>
    <version>3.0.0version>
dependency>

<dependency>
    <groupId>io.springfoxgroupId>
    <artifactId>springfox-swagger-uiartifactId>
    <version>3.0.0version>
dependency>
  1. 使用 SpringDoc OpenAPI 作为 Swagger 的替代品,它兼容 Spring Boot 3,在 pom.xml 文件中配置如下内容
<dependency>
    <groupId>org.springdocgroupId>
    <artifactId>springdoc-openapi-starter-webmvc-uiartifactId>
    <version>2.1.0version>
dependency>

你可能感兴趣的:(后端,-,问题清单,spring,boot,servlet,后端,java,http,spring,java-ee)