Christmas Pikachu Spring Boot - interceptor
개발일지/스프링

Spring Boot - interceptor

ZI_CO 2022. 12. 8.

interceptor 란 Filter 와 매우 유사한 형태로 존재 하지만, 차이점 Spring Context 에 등록이 된다. AOP와 유사한 기능을 제공할 수 있고, 주로 인증 단계를 처리하거나 Logging 를 처리 하는데 사용할 수 있다. 하나의 요청에 대해서 (URI) 전처리 후처리가 가능 함으로써 핵심 로직 역시 분리 할 수 있다.

 

 

💡 interceptor 란 Filter 와 매우 유사한 형태로 존재 하지만, 차이점 Spring Context 에 등록이 된다. AOP와 유사한 기능을 제공할 수 있고, 주로 인증 단계를 처리하거나 Logging 를 처리 하는데 사용할 수 있다. 하나의 요청에 대해서 (URI) 전처리 후처리가 가능 함으로써 핵심 로직 역시 분리 할 수 있다.

Spring 에 등록 시켜 주어야 한다 !!!!

 

활용 제안 : Filter 로깅 , 인증이 필요한 페이지라면 interceptor에서 사용해도 된다.

 

 

 

 

 

 💡 어노테이션을 사용하게 된 이유

우리는 기존의 자바 웹 애플리케이션에서 구성과 설정값을 XML 설정 파일을 통해 명시하고 관리하였다.

어노테이션을 사용하게 될 경우 데이터에 대한 유효성 검사 조건을 보다 쉽게 파악할 수 있고, 코드가 깔끔해지게 된다. 또한 어노테이션과 리플랙션을 같이 이용하면 원하는 클래스를 주입하는 것도 가능해진다.

어노테이션의 용도

  • 컴파일러에게 코드 문법 에러를 체크하도록 정보를 제공
  • 소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보를 제공
  • 실행 시(런타임 시) 특정 기능을 실행하도록 정보를 제공

 

 

 

어노에티션의 종류

Built-in Annotation : 자바에서 기본적으로 제공하는 어노테이션

Meta Annotation : 커스텀 어노테이션을 만들수 있게 제공된 어노테이션**

 

 

 

 

Built-in Annotation

 

 

 

 

 

@Retention

💡 어노테이션이 유지되는 기간을 지정하는데 사용되는 Meta Annotation이다.

기간 지정에는 다음과 같은 세 가지 유지(retention policy)를 사용할 수 있다.

유지정책(Retention policy)

- RetentionPolicy.Source : 컴파일 전까지만 유효
- RetentionPolicy.CLASS : 컴파일러가 클래스를 참조할 때까지 유효
- RetentionPolicy.RUNTIME : 컴파일 이후에도 JVM에 의해 계속 참조 가능

 

 

 

@Target

💡 어노테이션이 적용될 위치를 지정하는 Meta Annotation이다.

※ 사용종류

- ElementType.PACKAGE : 패키지선언
- ElementType.TYPE : 타입 선언
- ElementType.ANNOTATION_TYPE : 어노테이션 타입 선언
- ElementType.CONSRTUCTOR : 생성자 선언
- ElementType.FIELD : 멤버변수 선언
- ElementType.LOCAL_VARIABLE : 지역 변수 선언
- ElementType.METHOD : 메서드 선언
- ElementType.PARAMETER : 전달인자 선언
- ElementType.TYPE_PARAMETER : 전달인자 타입 선언
- ElementType.TYPE_USE : 타입 선언

 

 

 

 

댓글