inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 부트 - 핵심 원리와 활용

정리

Spring Boot 에서의 Delegating Filter Proxy

547

종운

작성한 질문수 21

0

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

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

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

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

spring spring-boot

답변 1

0

인프런 AI 인턴

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

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

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

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

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

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

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

보안이 엄격한 데이터

0

75

1

MyProperties 자체를 클라이언트 코드에서 사용

1

46

1

http://localhost:8080/actuator/prometheus

0

87

3

jar 추가에대한 질문드려도될까요?

0

69

1

build.gradle bom link 변경

0

69

2

@Counted 초기화

0

49

1

@Validated를 적용해도 빈 검증이 안되는 경우에 대한 조치 공유..

0

104

2

springboot에서 actuator없이 micrometer를 사용할수 있나요?

0

68

1

@Configuration 질문드립니다.

0

86

2

[공유] 터미널 말고 IDE 에서 jar 실행하기

0

103

1

localhost:8080/hello-servlet 404오류

0

125

2

내장톰캣2 서블릿 톰켓 실행이 안됩니다

1

155

2

최대 Tomcat 스레드 수를 확인하는 지표

0

162

1

mac m2에서 startup.sh 실행후 아무 반응이 없습니다.

0

96

2

내장 톰캣 실행 오류 관련 질문드립니다.

0

160

1

스프링 발전 과정들도 자세히 알아둬야하나요??

1

131

1

스프링부트 ioc 컨테이너 갯수

0

90

1

404 페이지

0

135

3

actuator 호출시 타임스탬프 질문

0

91

1

순수 라이브러리 사용하기 2 - memory-v1

0

126

1

외부설정 @ConfigurationProperties의 내부 클래스에서 static을 사용하는 이유를 알고 싶습니다.

0

105

1

서블릿 컨테이너 초기화1 강의 관련 질문입니다~

0

95

1

Thread Config Max 패널 설정 변경 질문

0

129

1

스프링 액츄에이터 shutdown 엔드포인트 활성화가 안됩니다.

0

110

1