공부/Spring
[Spring] Spring Web MVC, WebFlux 의존성 동시 사용
작은소행성
2024. 11. 28. 20:06
Spring Web MVC 와 WebFlux Reactive 환경에서 두 의존성을 같이 사용하면 문제가 발생한다.
동기/비동기 처리 방식 차이
MVC
- 서블릿 기반 컨테이너 (Tomcat, Jetty 등) 사용
- 동기적 요청-응답 모델로 요청이 처리될 때까지 쓰레드가 블로킹됨
WebFlux
- 비동기 서버 사용 (Netty 등)
- Reactive Streams 사용
- 요청-응답이 비동기적으로 처리되며 쓰레드 블로킹이 발생하지 않음
Spring Security 모듈 차이
MVC 와 WebFlux는 서로 다른 모듈을 제공한다.
두 모듈이 혼재하면 인증/인가 정보가 제대로 전달되지 않거나 null 로 처리될 가능성이 높다.
- MVC : spring-boot-starter-security
- WebFlux : spring-security-webflux
라이브러리 의존성 충돌
WebFlux 환경에서 DispatcherServlet 과 같은 컴포넌트를 사용하면 안된다.
WebClient 를 사용할 때 Webflux 가 아닌 RestTemplate 을 호출했는데 Security Context 가 손실되어 전달되었다.
위의 이유 말고도 다양한 이유가 있겠지만
프로젝트 성격에 따라 둘 중 하나를 선택해서 사용하는것을 추천한다.
반응형