요청이 들어오면 filter-> interceptor -> aop -> interceptor -> filter 순으로 거친다
서블릿 단위에서 실행
DispatherServlet 전 실행
요청과 응답을 거른뒤 정제하는 역할
인코딩 변환 처리, XSS방어 등의 요청/응답에 대한 변경/확인 작업이 주가 된다.
스프링 외부에 존재하여 스프링과 무관한 자원에 대해 동작한다
주소로 대상을 구분
web.xml에 설정한다
서블릿 단위에서 실행
DispathcerServlet 후 실행
요청에 대한 작업 전/후로 가로챈다
Controller(Handler)에 관한 요청과 응답에 대해 처리
스프링 내부에 존재하여 스프링의 모든 빈 객체에 접근 가능하다
로그인 체크, 권한체크, 프로그램 실행시간 계산작업 로그확인 등의 작업을 처리
주소로 대상을 구분
메서드명 | 역할 |
---|---|
preHandler() | 컨트롤러를 실행하기 전 실행 -> false를 리턴하면 컨트롤러를 실행하지 않는다. |
postHandler() | 컨트롤러가 정상적으로 실행된 이후에 실행. 익셉션을 발생하면 실행되지 않는다. |
afterCompletion() | 뷰가 클라이언트 응답을 전송한 뒤 실행. 컨트롤러에서 익셉션 발생시 Exception 파라미터에 전달되고, 발생하지 않으면 null이 전달된다. 컨트롤러 실행 후 로그를 남기거나, 실행 시간을 기록하는 등의 후처리를 위한 메서드. |
메소드 앞에 Proxy패턴의 형태로 실행
메소드 전후의 지점에 자유롭게 설정
로깅, 트랜잭션, 에러 처리 등 비즈니스단의 메서드에서 조금 더 세밀하게 조정하고 싶을 때 사용
주소, 파라미터, 애노테이션 등 다양한 방법으로 대상을 지정