Функциональные конечные точки Spring возвращают 404

Я создаю приложение, используя как обычные, так и функциональные конечные точки. Если я нажму на любой созданный объект с обычными конечными точками, я получу желаемые результаты. Но представляя функциональные конечные точки, все они возвращают 404. Я следую нескольким различным руководствам, и все они, похоже, используют один и тот же шаблон с обработчиком и маршрутизатором, который я внедрил.

Вот обработчик:

@Service
public class LorcCardHandler {
    private final LorcCardReactiveRepository lorcCardReactiveRepository;

    @Autowired
    public LorcCardHandler(LorcCardReactiveRepository lorcCardReactiveRepository) {
        this.lorcCardReactiveRepository = lorcCardReactiveRepository;
    }

    public Mono<ServerResponse> getCardProjectionList(ServerRequest request) {
        return ServerResponse.ok().body(lorcCardReactiveRepository.getAllCardsProjection(), CardProjection.class);
    }

}

А вот роутер

@Configuration
public class LorcRouter {
    private final LorcCardHandler handler;

    public LorcRouter(LorcCardHandler handler) {
        this.handler = handler;
    }

    @Bean
    public RouterFunction<ServerResponse> getCardListByRoute() {
       return route().path("/lorc", builder -> builder.GET(handler::getCardProjectionList)).build();
    }
}

Обновлено: По запросу добавление журналов Инициализация соответствующих bean-компонентов

o.s.b.f.s.DefaultListableBeanFactory: автоматическое подключение по типу от beaame «reactiveMongoTemplate» через фабричный метод к beaamed «mappingMongoConverter». o.s.d.r.c.s.RepositoryFactorySuppo: инициализация экземпляра репозитория для com.luizgomendes.lorc.rest.repository.LorcCardReactiveRepository… o.s.d.r.c.s.RepositoryFactorySuppo: завершено создание экземпляра репозитория для com.luizgomendes.lorc.rest.repository.LorcCardReactiveRepository. o.s.b.f.s.DefaultListableBeanFactory: автоматическое подключение по типу из beaame «lorcReactiveService» через конструктор в beaamed «lorcCardReactiveRepository». o.s.b.f.s.DefaultListableBeanFactory: автоматическое подключение по типу от beaame 'lorcReactiveController' через конструктор к beaamed 'lorcReactiveService' o.s.b.f.s.DefaultListableBeanFactory : Создание общего экземпляра одноэлементного bean-компонента 'lorcRouter' o.s.b.f.s.DefaultListableBeanFactory : Создание общего экземпляра одноэлементного bean-компонента 'lorcCardHandler' o.s.b.f.s.DefaultListableBeanFactory: автоматическое подключение по типу от beaame 'lorcCardHandler' через конструктор к beaamed 'lorcCardReactiveRepository' o.s.b.f.s.DefaultListableBeanFactory: автоматическое подключение по типу от beaame 'lorcRouter' через конструктор к beaamed 'lorcCardHandler' o.s.b.f.s.DefaultListableBeanFactory: создание общего экземпляра одноэлементного bean-компонента «globalExceptionHandler». o.s.b.f.s.DefaultListableBeanFactory: создание общего экземпляра одноэлементного bean-компонента getCardListByRoute.

Сервисный звонок

[Службы отдыха Lorcana] [nio-8080-exec-1] o.s.web.servlet.DispatcherServle: GET "/lorc", параметры = {} [Службы отдыха Lorcana] [nio-8080-exec-1] o.s.w.s.handler.SimpleUrlHandlerMapping: сопоставлено с ResourceHttpRequestHandler [путь к классам [META-INF/resources/], путь к классам [resources/], путь к классам [static/], путь к классам [public/] , Контекст сервлета [/]] [Lorcana Rest Services] [nio-8080-exec-1] o.s.w.s.r.ResourceHttpRequestHandl: найден ресурс [Службы отдыха Lorcana] [nio-8080-exec-1].w.s.m.s.DefaultHandlerExceptionResolver: решено [org.springframework.web.servlet.resource.NoResourceFoundException: нет статического ресурса lorc.] [Службы отдыха Lorcana] [nio-8080-exec-1] o.s.web.servlet.DispatcherServle: завершено 404 NOT_FOUND [Lorcana Rest Services] [nio-8080-exec-1] o.s.web.servlet.DispatcherServle: отправка «ОШИБКИ» для GET «/error», параметры = {} [Службы отдыха Lorcana] [nio-8080-exec-1] s.w.s.m.m.a.RequestMappingHandlerMapping: сопоставлено с org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController#errorHtml(HttpServletRequest, HttpServletResponse) [Службы отдыха Lorcana] [nio-8080-exec-1] o.s.w.s.v.ContentNegotiatingViewResolver: выбран «текст/html» с учетом [текст/html, текст/html; q=0,8] [Lorcana Rest Services] [nio-8080-exec-1] o.s.web.servlet.DispatcherServle: выход из отправки «ОШИБКА», статус 404 [Lorcana Rest Services] [localhost:27017] org.mongodb.driver.cluste: обновление описания кластера t{type=STANDALONE, server=[{address=localhost:27017, type=STANDALONE, roundTripTime=81,2 мс, состояние=CONNECTED} ] [Lorcana Rest Services] [localhost:27017] org.mongodb.driver.cluste: проверка статуса localhost:27017 [Lorcana Rest Services] [localhost:27017] org.mongodb.driver.cluste: обновление описания кластера t{type=STANDALONE, server=[{address=localhost:27017, type=STANDALONE, roundTripTime=12,2 мс, состояние=CONNECTED} ] [Lorcana Rest Services] [localhost:27017] org.mongodb.driver.cluste: проверка статуса localhost:27017 [Службы отдыха Lorcana] [nio-8080-exec-3] o.apache.coyote.http11.Http11Processo: ошибка анализа заголовка HTTP-запроса java.io.EOFException: ноль в org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1293) ~[tomcat-embed-core-10.1.24.jar:10.1.24] в org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1181) ~[tomcat-embed-core-10.1.24.jar:10.1.24] в org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:789) ~[tomcat-embed-core-10.1.24.jar:10.1.24] в org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:348) ~[tomcat-embed-core-10.1.24.jar:10.1.24] в org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:262) ~[tomcat-embed-core-10.1.24.jar:10.1.24] в org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-10.1.24.jar:10.1.24] в org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896) ~[tomcat-embed-core-10.1.24.jar:10.1.24] в org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741) ~[tomcat-embed-core-10.1.24.jar:10.1.24] в org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.24.jar:10.1.24] в org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190) ~[tomcat-embed-core-10.1.24.jar:10.1.24] в org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.24.jar:10.1.24] в org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) ~[tomcat-embed-core-10.1.24.jar:10.1.24] в java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]

включите журналы DEBUG и включите их ПОЛНОСТЬЮ в свой вопрос, чтобы мы могли видеть, что вы делаете.

Toerktumlare 19.07.2024 10:33
1
1
77
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Проблема заключалась в дополнительной зависимости от pom.xml.

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webflux</artifactId>
    <version>6.1.8</version>
</dependency>

Я попробовал ту же настройку в другом проекте, и после успеха я проверил каждую зависимость и посмотрел, какие из них являются дополнительными. После удаления указанной выше зависимости функциональная конечная точка работала как положено.

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