자바에서 메타데이터를 기록하는 보편적인 방법
데이터의 유효성 검사와 메타데이터 명세를 위해 자바에서 지원하는 문법이다. @어노테이션 이름
으로 쓸 수 있다
@Override
나 @Deprecated
등이 어노테이션에 속한다
🍕메타데이터란?
데이터를 위한 데이터, index, type 처럼 다른 데이터를 구조화하여 설명해주는 데이터이다. 대량의 데이터에서 찾고있는 정보를 효율적으로 찾아내기 위해 사용된다.
태그 같은 개념이라 생각하면 편하다.
@Override
@Deprecated
@SupressWarnings
@FunctionalInterface
@AnnotationName(value=data)
AnnotationName : 해당 어노테이션의 이름
value : 해당 어노테이션 내에 존재하는 프로퍼티의 이름(key)
data : 프로퍼티에 대입할 값(value)
프로퍼티가 없으면 Marker Annotation,
프로퍼티가 하나이면 SingleValueAnnotation,
프로퍼티가 여러개이면 MultiValueAnnotation 이라고 한다
어노테이션은 @interface
키워드로 작성할 수 있다
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Custom {
boolean value() default true;
}
위에 사용된 @Target
과 @Retention
을 메타 어노테이션 이라고 한다.
어노테이션을 선언할때 사용하는 어노테이션
메타메타데이타
@Target
어노테이션을 붙일 수 있는 위치(메서드, 필드, 타입 등)
타입은 클래스, 인터페이스, 열거형 등의 자료형을 의미한다
Retention
어노테이션이 어느시점까지 유효할지를 지정한다
컴파일 이전, 런타임 이전, 런타임 이후 로 나뉜다.
@Inherited
해당 어노테이션을 붙인 클래스의 자식클래스에도 어노테이션이 상속되도록 한다.
예를들어, A클래스의 한 메서드에 어노테이션을 붙였다면, A를 상속한 B 클래스의 해당 메서드에도 어노테이션이 적용된다.
@Repeatable
같은 위치에 해당 어노테이션을 여러번 붙일 수 있게 한다.