과제

<aside> 📌 1. 각 어노테이션 파헤쳐 보기 ex) Auth, @IpAddress 등

2. 테스트 때마다 DB 초기화가 이뤄지는 원리는?

</aside>

1. 각 어노테이션 파헤쳐보기

1.1. 들어가기 앞서

📌 @interface Annotation(사용자 지정 어노테이션)

1.1.1. @Target

@Target 은 Java compilerannotation이 어디에 적용될지 결정하기 위해 사용한다.

종류는 아래와 같다.

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

1.1.2. @Retention

@Retention 은 Annotation이 실제로 적용되고 유지되는 범위를 의미한다.

Policy에 관련된 Annotation으로 컴파일 이후에도 JVM 에서 참조가 가능한 RUNTIME으로 지정한다.

종류는 다음과 같다.

RetentionPolicy.RUNTIME
RetentionPolicy.CLASS
RetentionPolicy.SOURCE