Programing

Spring HandlerInterceptor 대 서블릿 필터

crosscheck 2020. 11. 25. 07:39
반응형

Spring HandlerInterceptor 대 서블릿 필터


Spring의 HandlerInterceptor 는 이제 .NET을 사용하여 특정 URL에서만 호출되도록 구성 할 수 있습니다 <mvc:interceptors>.

서블릿 필터는 동일한 기능 (로깅, 보안 등)을 달성 할 수 있습니다. 그렇다면 어느 것을 사용해야합니까?

인터셉터를 사용하면 ModelAndView객체를 사용 하여 모델과 작업 할 수 있으므로 더 많은 이점이 있습니다. 누구든지 필터 나 인터셉터가 다른 것에 비해 이점이있는 시나리오를 그릴 수 있습니까?


org.springframework.web.servlet.HanderInterceptor인터페이스 의 JavaDoc 자체가이 문제를 논의 두 단락을 가지고 :

HandlerInterceptor는 기본적으로 Servlet 2.3 필터와 유사하지만 후자와는 달리 핸들러 자체의 실행을 금지하는 옵션과 사용자 정의 후 처리를 허용하는 사용자 정의 전처리 만 허용합니다. 필터는 더 강력합니다. 예를 들어 체인으로 전달되는 요청 및 응답 객체를 교환 할 수 있습니다. 필터는 애플리케이션 컨텍스트의 HandlerInterceptor 인 web.xml에서 구성됩니다.

기본 지침으로, 세분화 된 핸들러 관련 전처리 작업은 HandlerInterceptor 구현, 특히 팩토 아웃 된 공통 핸들러 코드 및 권한 확인의 후보입니다. 반면에 필터는 멀티 파트 양식 및 GZIP 압축과 같은 콘텐츠 요청 및보기 콘텐츠 처리에 적합합니다. 이것은 일반적으로 필터를 특정 콘텐츠 유형 (예 : 이미지) 또는 모든 요청에 ​​매핑해야하는 경우를 보여줍니다.


Spring Handler 인터셉터를 사용하면 요청 수명주기의 더 많은 부분에 연결하고 프로세스에서 더 많은 정보에 액세스 할 수 있습니다. 필터보다 요청 / 응답주기와 더 밀접하게 연결되는 경우가 많습니다.

요청 / 응답을 블랙 박스 시스템으로 처리 할 때 필터가 더 적합합니다. 서블릿이 구현되는 방식에 관계없이 작동합니다.

Spring MVC를 사용하는 경우 새 로직을 서블릿 필터로 작성할 이유가 거의 없습니다. 모든 필터가 할 수 있고 인터셉터는 더 쉽고 우아하게 할 수 있습니다.

또한 서블릿 필터는 인터셉터보다 훨씬 오랫동안 사용되었습니다.


Spring 인터셉터를 사용하면 유용 할 수있는 Handler에 액세스 할 수 있습니다. 또한 Spring 인터셉터를 사용하면보기가 렌더링되기 전과보기가 렌더링 된 후에 논리를 실행할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/8000844/spring-handlerinterceptor-vs-servlet-filters

반응형