필터(filter)란?
- Web Application에서 관리되는 영역
- 인터셉터는 DispatcherServlet이 실행되기 전에 호출된다.
- Spring Boot Framework에서 클라이언트로부터 오는 요청/응답에 대해서 최초/최종 단계의 위치에 존재한다.
- Filter를 통해서 요청/응답의 정보를 변경할수 있다.
- Spring에 의해서 데이터가 변환되기 전의 순수한 클라이언트의 요청/응답 값을 확인 할 수 있다.
- 유일하게 ServletRequest/ServletResponse 객체를 변환할 수 있다.
- Filter에서는 주로 request/response의 logging 용도나 인증 logic 처리를 한다.
- Filter에서 logic을 처리함으로써 Service Business Logic과 분리한다.
필터 구현하기
- javax.servlet.Filter의 Filter 인터페이스를 구현한 클래스를 만든다.
- 상황에 맞는 메소드를 오버라이딩한다.
- public void init(FilterConfig filterConfig)
- 필터를 웹 콘테이너에 생성 후 초기화할 때 호출되는 메소드
- public void doFilter(ServletRequest request, SevletResponse response, FilterChain chain)
- request, response에 대한 필터링 로직을 작성하는 메소드
- resquest, response가 체인을 통과할 때 마다 서블릿 컨테이너에서 호출된다.
- FilterChain으로 연결한다.
- 필터링 로직을 사용하지 않을 때에는 요청을 servlet으로 보내지 않고 바로 응답하게 한다.
- public void destroy()
- 필터가 웹 콘테이너에서 삭제될 때 호출되는 메소드
- doFilter 예시
- public void init(FilterConfig filterConfig)
필터 적용하기
- @SpringBootApplication이 적용된 클래스에 가서 @ServletComponentScan을 추가한다.
- Filter를 구현한 클래스에 가서 @WebFilter(urlPatterns=”url 주소”)를 추가한다.
(url 주소는 String 배열로 줄 수도 있다.)