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 가 손실되어 전달되었다.
위의 이유 말고도 다양한 이유가 있겠지만
프로젝트 성격에 따라 둘 중 하나를 선택해서 사용하는것을 추천한다.
반응형
'공부 > Spring' 카테고리의 다른 글
[Spring] MongoDB, Redis 두개의 데이터 변경을 진행하는데 트랜잭션으로 관리가 가능한가 (0) | 2024.11.29 |
---|---|
[Spring] ReactiveMongoTemplate vs ReactiveMongoRepository (0) | 2024.11.07 |
[Spring] MongoDB 조회 - Stream, Aggregation 비교 (0) | 2024.11.04 |
[Spring] 스프링 AOP 포인트컷 (0) | 2024.05.21 |
[Spring] Spring AOP 구현 예제 (0) | 2024.05.17 |