
본 게시글은 'Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)' 강의를 공부하며 학습을 기록하기위한 목적으로 작성된 글입니다.
클라이언트가 스프링 클라우드 게이트웨이에 요청을 전달합니다.
게이트웨이에서 어떤 서비스로 갈지 판단하여 서비스의 요청을 분기합니다.

java코드로 작성한 설정을 사용하므로 application.yml파일에 설정한 정보를 주석으로 변경합니다.

@Configuration : 스프링 부트가 처음 부트스트랩에 의해서 작동을 하게 될때 메모리에 먼저 등록하는 작업을 합니다. 이때 등록하는 bean의 이름을 RouteLocator로 합니다.
RouteLocator : 이전 시간에 작성한 application.yml에서 게이트웨이에 라우터를 등록한것과 마찬가지로 JAVA코드에 의해서 처리할 수 있습니다.
라우트 정보를 넣습니다. 매개변수로 전달된 r이라는 라우트 객체에 path정보를 등록하고 filter를 설을 한뒤 이동하게될 uri를 설정해줍니다.
필터객체 f에 요청과 응답에 대한 헤더를 설정합니다.
라우트에 필요했었더 내용을 메모리에 반영합니다.

lombok에 있는 로그를 사용합니다.
message함수에서 first-request라는 이름의 헤더에 담긴 헤더값을 header에 받습니다.


게이트웨이 서비스에서 클라이언트 요청이 들어오면 추가적인 리퀘스트값(Request Header, Request Response 등)을 넣고 전달되는 과정을 볼 수 있습니다.

이전에 작성한 FilterConfig가 스프링부트에서 동작하지 않도록 어노테이션을 주석으로 변경합니다.

java코드로 작성한 filter와 마찬가지로 리퀘스트값을 추가할 수 있습니다.
java코드의 리퀘스트와 구분하기위해 값에 2를 붙여줍니다.

PostMan으로 filter가 적용된 것을 확인할 수 있습니다.