어노테이션이란?
어노테이션(Annotation)은 자바 언어에서 코드에 대한 메타데이터를 제공하는 표기법
- 어노테이션은 코드의 메타데이터를 제공하고, 다양한 프레임워크와 도구에서 코드의 행동을 제어하거나 확장하는 데 널리 사용된다.
메타 데이터란
- 애플리케이션이 처리해야할 데이터가 아니라 컴파일 및 런타임 과정에서 코드를 어떻게 처리해야 할지 알려주기 위한 추가 정보이다.
어노테이션을 정의할 때는 @interface 키워드를 사용한다. 여기서는 어노테이션의 타겟, 보존 정책등을 설정할 수 있다.
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME) // 런타임에 어노테이션을 사용할 수 있도록 설정
@Target(ElementType.FIELD) // 어노테이션을 필드에 적용하도록 설정
public @interface MaskedValue {
// 어노테이션 요소 정의 가능
}
이 어노테이션은 선언한 어노테이션이 적용될 수 있는 위치를 결정한다
@Target(ElementType.TYPE)
ElementType Enum에 선언된 값
TYPE : class, interface, enum에 적용된다.
FIELD : 클래스 필드 변수
METHOD : 메서드
PARAMETER : 메서드 인자
CONSTRUCTOR : 생성자
LOCAL_VARIABLE : 로컬 변수
ANNOTATION_TYPE : 어노테이션 타입에만 적용된다
PACKAGE : 패키지
TYPE_PARAMETER : 자바8부터 추가된 값으로 제네릭 타입 변수에 적용된다. (ex. MyClass)
TYPE_USE : 자바8부터 추가된 값으로 어떤 타입에도 적용된다 (ex. extends, implements, 객체 생성시등등)
@Retention(RetentionPolicy.RUNTIME)
어노테이션이 어느레벨까지 유지되는지를 결정짓는다.
RetentionPolicy Enum에 선언된 값
@Inherited
@Documented
@Repeatable