programing

SpringMvc와 webflux를 함께 사용할 수 있나요?

css3 2023. 3. 11. 09:18

SpringMvc와 webflux를 함께 사용할 수 있나요?

하나의 프로젝트에서 두 가지 접근법(리액티브와 스탠다드)을 사용하고 싶습니다.

REST API 엔드포인트 하나를 사후 대응형 Webflux로 마이그레이션하고 나머지 엔드포인트를 마이그레이션하기 전에 성능을 테스트하려고 했습니다.하지만 그것은 작동하지 않았다.그를 위해 라우터와 핸들러를 추가했지만 제거하지 않을 때까지spring-boot-starter-web의존 관계 및 비활성화@RestController나는 http를 얻었다.404항상 코드를 사용합니다.가능합니까, 불가능합니까?아니면 모든 프로젝트를 사후 대응적 접근 방식으로 이행해야 합니까?

「Spring Boot 」레퍼런스 메뉴얼에서 설명하고 있듯이, MVC와 WebFlux를 모두 사용할 수 있는 경우, Spring Boot 는 Spring MVC 애플리케이션을 자동적으로 설정합니다.여기에는 몇 가지 이유가 있습니다.

  • Spring MVC를 Netty에서 실행할 수 없음
  • 양쪽 인프라스트럭처가 같은 작업(예를 들어 정적 리소스 제공, 매핑 등)을 위해 경쟁합니다.
  • 두 런타임 모델을 같은 컨테이너 내에서 혼합하는 것은 좋은 생각이 아니며 성능이 떨어지거나 전혀 작동하지 않을 수 있습니다.

달성하려는 목표에 따라 여러 가지 방법이 있을 수 있습니다.

사용하시려면WebClient복수의 동시 리모트 HTTP 콜을 최적화하고 Reactor 오퍼레이터를 사용하려면 Spring MVC 주석 달린 컨트롤러와 리턴 리액티브타입을 반환값으로 계속 사용할 수 있습니다(자세한 내용은 이 Spring Boot Talk를 참조하십시오).

완전한 scalability와 ratency를 실현하고 싶은 경우(물리 스루풋은 필요 없음),spring-boot-starter-webflux거기서부터 일해요.(데이터베이스 콜의 블록 등) 블로킹 API의 사용은 금지되어 있습니다.또, 이러한 API는,Flux또는Mono개별 스레드 풀에서 작업하는 스케줄은 퍼포먼스 측면에서 고객에게 불리하게 작용합니다.

마지막으로 Spring WebFlux가 제공하는 기능적 접근 방식을 사용하고자 하는 경우 반드시 더 나은 성능을 발휘할 필요는 없습니다.실제로 사용 사례와 구현 방법에 따라 달라집니다.

언급URL : https://stackoverflow.com/questions/53883037/can-i-use-springmvc-and-webflux-together