spring-boot-starter-web
과 spring-boot-starter-webflux
을 모두 응용 프로그램에 추가하면 SpringBloot은이를 Spring MVC 응용 프로그램으로 구성합니다.
많은 스프링 MVC가 새로운 WebClient
을 MVC 애플리케이션에서 활용할 수 있도록 webflux 의존성을 얻으려고 의도 한 것입니다. 또한 Spring Framework 5에서 Spring MVC는 컨트롤러 레벨에서 Flux로 몇 가지 경우를 처리하는 방법을 알고 있습니다.
당신은 항상이 같은 선택을 강제 할 수
SpringApplication app = new SpringApplication(MyApplication.class);
app.setWebApplicationType(WebApplicationType.REACTIVE);
app.run(...);
를 귀하의 경우에는,이 선택을 강요하는 것이 아니라 WebFlux에서 지원되지 않는 무언가를 사용하는 방법에 대한 없습니다.
server.servlet.context-path
구성 속성은 Servlet에 따라 다르므로 WebFlux에서는 작동하지 않습니다. 현재 Spring Boot는 WebFlux 응용 프로그램을위한 war 배포 또는 다중 웹 컨텍스트를 지원하지 않습니다. 그런 재산을 제공하는 데는 아무런 소용이 없습니다.
"Servlet 기반"과 Spring의 Reactive runtime 사이의 런타임 모델 차이는 매우 미묘 할 수 있으므로 talk that describes those choices을 보시기 바랍니다. 짧은 대답은 : 비동기 타입 (DeferredResult
, Flux
또는 SseEmitter
)의 Spring MVC를 사용하는 경우 비동기가되지만 읽기 및 쓰기는 여전히 차단됩니다.
벤치마킹은 매우 어렵지만,보고있는 결과는 어떻게 든 예상됩니다. 로컬 서버 + 클라이언트를 실행하고 대기 시간을 고려하지 않고 원시 처리량을 살펴보면 모든 제약 조건은 동시성 비용이있는 반응 모델을 선호해서는 안됩니다. 이 벤치 마크는 비 이상적인 사용 사례의 경우에도 반응성 스택이 이미 최적화되어 있음을 보여줍니다.
감사합니다. Brian이 나를 많이 도왔습니다. –