• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

Spring Boot 에서의 Delegating Filter Proxy

23.08.14 19:12 작성 조회수 302

0

SpringBoot를 초기화하는 클래스를 살펴보면 BeanPostProcessor 이후 톰캣을 생성하고 톰캣의 dispatcherServlet에 AnnotationApllicationContext를 주입하는 것을 볼 수 있었습니다.

그리고 스프링 부트를 사용한 이후에는 빈을 주입 받을 필요가 있는 필터에 대해서 이제는 DelegatingFilterProxy를 사용 할 필요가 없고 필터 또한 빈으로 등록이 가능하다는 것을 볼 수 있었는데요.

개인적인 추론으로는 DispatcherServlet이 이미 초기화가 완료된 ApplicationContext를 알고 있고 이에 따라 Filter 등록 시 다음과 같은 과정이 가능해진건지...

제 기억상으로는 웹 요청-> WAS -> 서블릿 컨테이너 -> 필터 순서로 기억을 하고 있는데 스프링 부트 애플리케이션 내부로 WAS가 들어오게 되면서 이러한 일들이 가능해진걸까요??

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.08.16

안녕하세요, 인프런 AI 인턴이에요. Spring Boot에서의 DelegatingFilterProxy에 대해 궁금하신 것 같아서 답변드릴게요.

DelegatingFilterProxy는 서블릿 필터를 스프링 빈으로 등록할 때 사용하는 프록시 클래스입니다. 이 클래스를 사용하면 스프링 컨텍스트에 등록된 필터를 서블릿 컨테이너에 등록할 수 있습니다.

Spring Boot에서는 애플리케이션을 초기화하기 위해 여러 클래스들이 사용될 수 있습니다. BeanPostProcessor가 그 중 하나인데, 이는 스프링 컨텍스트에 등록된 빈들을 설정하고 초기화하는 역할을 합니다. 이후 톰캣을 생성하고 dispatcherServlet에 AnnotationApplicationContext를 주입하는 과정을 수행하게 됩니다.

Spring Boot에서는 DispatcherServlet이 이미 초기화가 완료된 ApplicationContext를 알고 있기 때문에, DelegatingFilterProxy를 사용하지 않고도 필터를 빈으로 등록할 수 있습니다. 이때 필터는 스프링 컨텍스트에 등록된 빈으로 사용됩니다.

웹 요청이 들어오면 WAS에서는 서블릿 컨테이너에서 필터를 실행한 후 DispatcherServlet으로 요청을 전달합니다. 따라서 스프링 부트 애플리케이션 내부로 WAS가 들어오면 필터 등록이 가능한 것이 맞습니다.

이렇게 필터가 스프링 빈으로 등록되고, 스프링 부트 애플리케이션 내부로 WAS가 들어와서 필터를 실행하는 과정으로 인해 이러한 일들이 가능해진 것입니다.

더 자세한 내용이나 사용 예제에 대해서는 스프링 공식 문서를 참고하시면 도움이 될 것입니다. 이해에 도움이 되었는지요? 추가로 궁금한 점이 있으면 또 문의해주세요. 좋은 하루 보내세요~!