컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공
소스 코드에 메타데이터를 추가하여 컴파일러에게 추가적인 정보를 제공합니다. 이를 통해 컴파일러는 코드 작성 문법 에러를 감지하고 개발자에게 미리 알려줄 수 있습니다. 예를 들어, 잘못된 변수 유형 또는 부적절한 메서드 사용과 같은 오류를 방지할 수 있습니다.
소프트웨어 개발툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보 제공
개발 도구는 코드의 구조를 이해하고 자동으로 필요한 작업을 수행할 수 있습니다. 예를 들어, 데이터베이스 연결 정보나 웹 서비스 엔드포인트와 같은 설정 정보를 어노테이션으로 전달하여 자동으로 코드를 생성하거나 구성할 수 있습니다.
실행시(런타임시) 특정 기능을 실행하도록 정보를 제공
런타임에 특정 기능을 실행하도록 정보를 제공할 수 있습니다. 이를 통해 어노테이션이 지정된 코드 블록이나 메서드에 대해 특정 작업을 수행하도록 할 수 있습니다. 예를 들어, 보안 검사, 로깅, 트랜잭션 관리 등과 같은 기능을 어노테이션으로 정의하여 실행시에 자동으로 적용할 수 있습니다.
public @interface RestControllerWithSwagger {
}
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface RestControllerWithSwagger {
}
@Taget에는 어떤 값(클래스, 필드, 메서드…)에 어노테이션을 적용할 것인지 넣을 수 있다.
ElementType 열거상수 | 적용 대상 |
---|---|
TYPE | 클래스, 인터페이스, 열거타입 |
ANNOTATION_TYPE | 어노테이션 |
FIELD | 필드 |
CONSTRUCTOR | 생성자 |
METHOD | 메소드 |
LOCAL_VARIABLE | 로컬 변수 |
PACKAGE | 패키지 |
@Retention에는 어노테이션 값을 언제까지 유지할 것인지 입력한다.
보통 어노테이션은 Runtime시에 많이 사용된다.
RetentionPolicy열거상수 | 설명 |
---|---|
SOURCE | 소스상에서만 어노테이션 정보를 유지한다. 소스코드를 분설할 때만 의미가 있으며, 바이트 코드 파일에는 정보가 남지 않는다. |
CLASS | 바이트코드 파일까지 어노테이션 정보를 유지한다. 하지만 리플렉션을 이요해서 어노테이션 정보를 얻을 수는 없다. |
RUNTIME | 바이트 코드 파일까지 어노테이션 정보를 유지하면서 리플렉션을 이용해서 런타임에 어노테이션 정보를 얻을 수 있다. |
하위 클래스에도 적용가능하도록 하는 어노테이션
javadoc에 의해 문서화가 되도록 하는 어노테이션