인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

ybs1121님의 프로필 이미지

작성한 질문수

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

Spring Cloud Gateway - Filter 적용

route 설정이 동작을 안하는거 같아요.

작성

·

32

0

RouteLocator gatewayRoutes(RouteLocatorBuilder builder)

이 메소드를 만들기 위해

implementation 'org.springframework.cloud:spring-cloud-starter-gateway'

이걸로 수정했을 했는데 이후 저 메소드를 주석 처리하고 applicatio.yml을로 설정을 대체 했을 때는 동작을 안하고

implementation 'org.springframework.cloud:spring-cloud-starter-gateway-mvc'

mvc로 다시 변경해줘야 올바르게 동작하는데
무슨 차이가 있을까요?

답변 2

0

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

안녕하세요 , 이도원입니다.

올려주신 내용으로 테스트를 재현해 보니 문제가 발생되지 않는 것 같습니다. 강의에서도 설명 드렸던 것처럼 RouteLocator 작업이나, application.yml 파일로의 작업이나 같은 동작으로 해야 하는데, RouteLocator에서 application.yml로 돌아 왔다고 해서 동작을 안하거나 하지는 않습니다. 오히려 spring-cloud-starter-gateway-mvc를 이용하게 되면, WebFlux대신 Servlet을사용하는 방식으로 작동하게 된 것이고, RouteLocator는 application.yml 파일으로만(또는 Bean 생성), 필터 역시 AbstractGatewayFailterFactory 대신 Filter나 HandlerInterceptor 등을 이용해야 합니다. spring-cloud-starter-gateway-mvc로 변경 시, Filter 부분은 어떻게 수정하셨는지를 확인해 보시면 좋을 것 같습니다.

혹시, IDE에서 변경된 dependecy 등을 캐시 문제로 인식 못한 경우도 있을 수 있으니, IDE의 캐시를 삭제하고 실행해 보시면 좋을 것 같습니다.

추가 질문사항 있으시면 다시 글 남겨 주세요.

감사합니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다.

ybs1121님, Spring Cloud Gateway에서 RouteLocator를 설정할 때 발생하는 문제에 대해 말씀해 주셨군요. 주석 처리 후 application.yml로 구성했을 때 동작하지 않는 문제는 주로 두 가지 다른 라이브러리 사용에 기인할 수 있습니다.

  1. Spring Cloud Gateway vs Spring Cloud Gateway MVC:

    • spring-cloud-starter-gateway: 이 경우 Netty 서버를 사용하여 비동기적으로 동작합니다. application.yml에서 정의한 비동기식 설정이 자연스럽게 작동할 수 있습니다.
    • spring-cloud-starter-gateway-mvc: 이는 전통적인 Spring MVC 방식으로 동작하며, Tomcat 서버를 사용합니다. application.yml에서 설정한 라우팅이 이 경우 제대로 반영되지 않을 수 있습니다. 이는 주로 구성을 올바르게 반영하도록 설정 파일이 맞추어져 있는지, 그리고 Tomcat 서버에서의 동작과 관련이 있습니다.
  2. 구성 차이:

    • spring-cloud-starter-gateway의 경우 Reactor 기반이며, 비동기적 운영을 기본으로 합니다. application.yml에서의 설정은 바로 반영됩니다.
    • 반면 spring-cloud-starter-gateway-mvc는 예전에 사용되던 Netty 기반이 아닌 기존의 MVC 패턴을 사용하므로 설정 파일의 일부가 반영되지 않을 수 있습니다. 이 경우 server.port 등의 설정도 다르게 관리해야 할 수 있습니다.

위 내용이 도움될지 모르겠지만 관련된 글을 참고로 드립니다:

해당 링크에서 유사한 토픽이 논의되고 있으며, 자세한 예시와 원인을 확인하실 수 있습니다. 마이크로서비스 구성 시 Spring Cloud Gateway의 설정과 작동 방식에 따라 올바른 라이브러리를 선택하시기 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

ybs1121님의 프로필 이미지

작성한 질문수

질문하기