Interceptor & Annotation

그림1

✔️ HTTP Request / Response의 Controller 앞뒤에 요청/응답을 가로채 작업을 수행하는 역할

✔️ HandlerInterceptor 인터페이스를 이용해 구현한다.

  • implements : preHandle() postHandle() afterCompletion()

✔️ 예제에서는 세션처리에 관련된 @Auth 를 구현 해봤다.

필터는 그림에서 보이듯 Servlet의 앞에서 관여하며 Interceptor는 Controller의 앞뒤에서 이루어진다

HandlerInterceptorAdapter

Interceptor의 구현시 상속받아 이용할 수 있는 추상 클래스이다. Interceptor 구현시 필요한 HandlerInterceptor 인터페이스를 기본으로 구현한 클래스 이기 때문에 Method만 Override하여 구현 할 수 있다.

Annotation

AOP의 구성요소인 JoinPoint 로써 Annotation의 삽입을 통해 컴파일시(When) 해당 타겟 메서드에 추가적인 코드를 실행하는것이다.

  • @Target : 어노테이션의 타켓을 지정 ( FIELD, METHOD, PARAMETER, TYPE)
  • @Retention : 어노테이션의 지속 (보존) 기간을 지정( RUNTIME, SOURCE )
@Target( ElementType.METHOD )
@Retention( RetentionPolicy.RUNTIME )
public @interface Auth {

}

Annotation Flow