Я бы хотел использовать 2 подхода (реактивный и стандартный) в одном проекте.
Я попытался перенести одну конечную точку REST API на реактивный webflux и протестировать производительность перед переносом остальных. Но это не сработало. Я добавил для него маршрутизатор и обработчик, но пока я не удалил spring-boot-starter-web из зависимостей и не отключил @RestController, я все время получал код http 404. Возможно это или нет? Или мне следует перевести весь проект на реактивный подход?




Как объясняется в справочной документации Spring Boot, Spring Boot автоматически настроит приложение Spring MVC, если доступны как MVC, так и WebFlux.. На это есть несколько причин:
В зависимости от цели, которую вы пытаетесь достичь, можно поработать несколькими способами.
Если вы хотите использовать WebClient для оптимизации нескольких одновременных удаленных HTTP-вызовов и использовать операторы Reactor, вы можете продолжать использовать аннотированные контроллеры Spring MVC и возвращать реактивные типы в качестве возвращаемых значений (подробнее об этом в этом Spring Boot Talk).
Если вы хотите работать над чистой масштабируемостью и задержкой (не обязательно с исходной пропускной способностью), вы можете начать использовать spring-boot-starter-webflux и работать оттуда. Обратите внимание, что использование API-интерфейсов блокировки (таких как блокировка вызовов базы данных) запрещено, а упаковка их с помощью Flux или Mono и планирование, которое работает с отдельными пулами потоков, будут работать против вас с точки зрения производительности.
Наконец, если вы хотите использовать функциональный подход, предоставляемый Spring WebFlux, он не обязательно будет работать лучше. Это действительно зависит от вашего варианта использования и того, как вы его реализуете.