Тип javax.servlet.http.HttpServletRequest отсутствует, с gradle springfox-swagger2: 3.0

Я пытаюсь реализовать swagger в своем весеннем проекте загрузки. Я искал в Интернете и обнаружил, что Springfox 3.0 может быть несовместим с Spring Boot 3.0. Пробовал и со старыми версиями. Но я не могу этого сделать. Я использую градиент.

ОШИБКА В ТЕРМИНАЛЕ

Build.gradle

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.0.1'
    id 'io.spring.dependency-management' version '1.1.0'
}

group = 'practice.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '19'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    implementation("io.springfox:springfox-swagger2:3.0.0")
}

tasks.named('test') {
    useJUnitPlatform()
}

Основной java-файл

package practice.example.crud_practice;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@SpringBootApplication
@EnableSwagger2
@RestController
public class CrudPracticeApplication {

    public static void main(String[] args) {
        SpringApplication.run(CrudPracticeApplication.class, args);
    }



    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
            .select()
            .apis(RequestHandlerSelectors.any()) // this will include all controllers
            .paths(PathSelectors.any())
            .build();
      }

      @GetMapping("/hello")
public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
return String.format("Hello %s!", name);
}
}

КОГДА Я ПРИСОЕДИНЯЮСЬ, ТЕРМИНАЛ ВЫХОДА СЛЕДУЮЩЕЙ ЛИНИИ НЕ ПОКАЗЫВАЕТ ОШИБКИ

@EnableSwagger2
Лучшая компания по разработке спортивных приложений
Лучшая компания по разработке спортивных приложений
Ищете лучшую компанию по разработке спортивных приложений? Этот список, несомненно, облегчит вашу работу!
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Если вы являетесь веб-разработчиком или тестировщиком, вы можете быть знакомы с Selenium, популярным инструментом для автоматизации работы...
Фото ️🔁 Radek Jedynak 🔃 on ️🔁 Unsplash 🔃
Фото ️🔁 Radek Jedynak 🔃 on ️🔁 Unsplash 🔃
Что такое Java 8 Streams API? Java 8 Stream API
Деревья поиска (Алгоритм4 Заметки к учебнику)
Деревья поиска (Алгоритм4 Заметки к учебнику)
(1) Двоичные деревья поиска: среднее lgN, наихудшее N для вставки и поиска.
0
0
202
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Кажется, Springfox 3 несовместим с Spring Boot 3.

Причина:

  • Как видите Springfox 3 ссылки HttpServletRequest из пакета javax.servlet.http.
  • Spring Boot 3 связывает новый пакет jakarta.servlet.http через его tomcat-embed-core зависимость.

Решение: используйте Spring Boot 2.x

Если вы хотите использовать Springfox 3, вам, вероятно, следует придерживаться Spring Boot 2.x, чтобы иметь работающую систему.

Альтернатива: перейти на springdoc-openapi

Вместо этого вы также можете использовать springdoc-openapi v2 , который поддерживает Spring Boot 3. Я следовал руководству по миграции для вашего сценария, и он работал нормально (URL-адрес localhost:8080/v3/api-docs).

  • Удалена зависимость от Springfox.
  • Добавлена ​​зависимость implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'
  • Удален импорт Docket bean и springfox.
  • Добавлено springdoc.pathsToMatch=/** в application.properties

ОК Решил. Большое спасибо за ваше время и усилия!

M Nouman 11.01.2023 01:18

Другие вопросы по теме