애노테이션

이재연·2021년 2월 22일
0

Java Basic

목록 보기
12/15

애노테이션이란?

일종의 주석이라고 생각하면 된다. 프로그램을 위한 정보를 나타낸다. 즉 기능을 가지고 있지 않다는 것.
메타데이터의 역할을 한다.
정적이다(값을 런타임 시점에 변경하여 사용하지 못한다).

애노테이션 정의하는 방법

public @interface MyAnnotation {

}

@Retention

어노테이션을 언제까지 유지할지에 대한 애노테이션이다. 3단계로 설정 가능하다. 기본값은 CLASS이다.

SOURCE : 소스 파일까지 유지된다. 클래스 파일에는 존재하지 않는다. 대표적으로 @Override가 이 이 단계에 해당된다.

CLASS : 컴파일 단계까지 유지된다. 클래스 파일에 존재는 하지만 런타임에는 정보가 무시된다.

RUNTIME : 실행 시점까지 유지된다.

@Target

애노테이션을 생성할 때 대상을 지정하는데 사용한다.

TYPE : 타입(클래스, 인터페이스, ENUM)에만 지정 가능하다

FIELD : 필드에만 지정 가능하다.

METHOD : 메소드에만 지정 가능하다.

PARAMETER : 파라미터에만 지정 가능하다.

CONSTRUCTOR : 생성자에만 지정가능하다.

LOCAL_VARIABLE : 지역 변수에만 지정 가능하다.

ANNOTATION_TYPE : 애노테이션에만 지정 가능하다.

PACKAGE : 패키지에만 지정 가능하다.

TYPE_USE : 타입이 사용되는 모든곳에 지정 가능하다.

MODULE : 모듈에 지정 가능하다.

모듈은 자바9 부터 생겼다. 여러개의 패키지가 모여 하나의 모듈을 이루고 있을수 있으니깐 아마 패키지 보다 더 큰 의미로 사용되는 것 같다.

@Documented

애노테이션의 정보가 JavaDoc문서에 포함되도록 한다.

JavaDoc : Java 코드를 설명하는 HTML 형식의 문서이다.

이런 애노테이션을 만들었다.

생성한 JavaDoc에 포함이 되었다.

애노테이션 프로세서

애노테이션은 단순히 주석이라는 것을 알았다. 그렇다면 애노테이션을 붙이기만 하면 빈으로 등록해준다거나 코드를 생성해주는 기능은 어떻게 작동하는 것일까?

애노테이션 프로세서는 javac 빌드툴의 일종으로 컴파일 단계에서 애노테이션을 읽고 처리하기 때문에 가능하다. 새로운 자바 파일을 만들어낼수 있지만 기존 코드에 대한 변경은 불가능하다.

0개의 댓글