inblog logo
|
sxias
    스프링부트

    [스프링부트] 29. Filter

    문정준's avatar
    문정준
    Apr 23, 2025
    [스프링부트] 29. Filter
    Contents
    1. Filter2. Filter vs Interceptor vs AOPBean 활용

    1. Filter

    • DispatcherServlet에 진입하기 전에 클라이언트의 요청 및 응답을 제어하는 구간
    • Spring 외부의 공간이라 Spring 함수 사용 불가
     

    2. Filter vs Interceptor vs AOP

    Filter

    • 서버의 진입로에서 클라이언트의 접근을 처리
    • 클라이언트의 상태에 상관 없이 동일한 행동을 수행
    • Spring 외부 : Spring의 도움을 받을 수 없고, DB 접근도 불가
     

    Interceptor

    • 서버 내부에서 클라이언트의 요청 및 응답을 처리
    • 클라이언트의 상태에 상관 없이 동일한 행동을 수행
    • Spring 내부 : Spring 함수 사용 가능, DB에 접근 가능
     

    AOP

    • 서버 내부에서 클라이언트의 요청 및 응답을 처리
    • 클라이언트의 상태에 따라 다른 동작을 수행 (클라이언트를 분석 가능)
    • Spring 내부 : Spring 함수 사용 가능, DB에 접근 가능
     
     
    • LogFilter
    @WebFilter("/*") public class LogFilter implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("filter working-------------------------------------"); // HttpServletResponse resp = (HttpServletResponse) servletResponse; // downcasting // servletResponse.getWriter().println("Hello world"); filterChain.doFilter(servletRequest, servletResponse); } }
    • main에서 @ServletComponentScan 어노테이션 추가 : ServletComponent ( Filter ) 를 찾음
     
     
    notion image
     
     

    Bean 활용

    • Spring 밖에 있는 Filter의 제어권을 확장하기 위해, Configuration을 통해 Spring에서 외부의 Filter를 자동으로 설정
    • 이와 같은 디자인 패턴을 Delegate 패턴이라고 함
    • Filter의 기능을 Spring이 대신 수행하는 것이 아닌, Spring의 요청 전 처리를 Filter에게 위임시킴
    • Filter는 Filter의 기능을 수행하면서도 Spring의 기능을 일부 사용 가능 (DB 접근 가능 등)
    Delegate Pattern(델리게이트 패턴, 위임 패턴)이란?
    * 23.03.29 코드수정 Delegate 패턴이 '헤드퍼스트 디자인 패턴' 도서에 나와있지 않아서 정리해보고자 한다. 아무래도 Decorator 패턴 또는 strategy 패턴과 비슷하기 때문일까? 또한, 이 Delegate 패턴이 Decorator 패턴이랑 혼동된 블로그 글도 나와있기에 힘들었다. 그리고 Strategy 패턴과 유사한 부분이 있어서 이 점도 많이 헷갈렸다. 🤔 Delegate 패턴이란? delegate는 '위임하다' 라는 사전적 의미를 가지고 있음 즉, 객체가 자신의 기능을 다른 객체에게 위임하여 기능을 실행하는 디자인 패턴 객체 간의 결합도를 낮춰서 유지보수성과 확장성을 높이는데 사용됨 예를 들면 다음과 같다 A는 B의 기능을 사용하고 싶을 때, A가 B의 기능을 직접 구현하지 않..
    Delegate Pattern(델리게이트 패턴, 위임 패턴)이란?
    https://ssdragon.tistory.com/139
    Delegate Pattern(델리게이트 패턴, 위임 패턴)이란?
     
    • FilterConfig
    @RequiredArgsConstructor @Configuration public class FilterConfig { private final UserRepository userRepository; @Bean public FilterRegistrationBean<LogFilter> loggingFilter() { FilterRegistrationBean<LogFilter> registrationBean = new FilterRegistrationBean<>(); registrationBean.setFilter(new LogFilter(userRepository)); registrationBean.addUrlPatterns("/*"); // 모든 요청에 적용 registrationBean.setOrder(1); // 필터 순서 설정 return registrationBean; } }
     
    Share article
    Contents
    1. Filter2. Filter vs Interceptor vs AOPBean 활용

    Sxias ㆍ a32176740@gmail.com

    RSS·Powered by Inblog