1. Java Annotation
Java 어노테이션은 JEE5부터 추가된 문법이며 기본적으로 인터페이스입니다. 사전적정의로는 주석이라는의미를 가지고 있고 특수한의미를 부여하거나 기능을 주입하면서 컴파일타임 시점이나 런타임시점에 해석됩니다. 기존의 xml의 불편함을 개선하기위해서 나오게된 Annotation(어노테이션)
이라고생각하면 됩니다.
2. Built-in Annotation
Java내에 내장되어 있는 어노테이션을 Built-in Annotation이라 불리어오며 주로 컴파일러에게 정보를 제공하게 됩니다.
@Override
메서드앞에 붙일수 있으며 현재 메서드가 슈퍼클래스의 메소드를 오버라이드한 메소드임을 명시합니다.
@Deprecated
annotation으로 타입, 필드, 메소드 등에 사용되며 @Deprecated 표시 되어 있는 메소드나 필드를 사용하면 빌드할 때 Warning 메시지를 보여주게됩니다. 즉, 컴파일러에게 이 메소드는 없어질 예정임을 명시합니다.
@SupressWarning
컴파일러에게 전달하여 경고를 제거합니다.
FunctionalInterface
컴파일러에게 다음의 인터페이스는 함수형 인터페이스라는것을 명시합니다.
3. Meta-Annotation
어노테이션의 동작 대상을 결정하는 어노테이션이며 어노테이션을 정의할때 주로 사용합니다.
@Target
어노테이션이 적용가능한 대상을 지정하는데 사용되며 여러값을 {} 괄호로 사용할 수 있다.
@Retention
SOURCE::, CLASS::, RUNTIME:: 세가지 유지정책으로 사용할 수 있는데 어노테이션이 유지되는 기간을 지정하는데 사용합니다.
@Documented
vavadoc으로 작성한 문서에 포함되도록 할 때 사용하는 어노테이션입니다.
@Inherited
어노테이션이 자손 클래스에도 상속되도록 하는 어노테이션입니다
@Native
네이티브 메서드에 의해 참조되는 상수필드에 붙이는 어노테이션입니다.
네이티브 메서드란?
JVM이 설치된 OS의 메서드를 말한다. 네이티브 메서드는 보통 C언어로 작성되어 있고 자바에서는 메서드의 선언부만 정의하고 구현은 하지 않는다.
4. Custom Annotation
Maker Annotation
요소가 한개도 없으며 단순히 표식으로 사용되는 어노테이션(의미전달)
Single-value Annotation
요소로 단일 변수만을 갖는 어노테이션입니다.
Full Annotaion
요소로 둘 이상의 변수를 갖는 어노테이션으로, 데이터를 배열 안에 key-value의 형태로 전달합니다.