본문 바로가기
IT-Language/IT-Java

어노테이션(Annotation) - @Retention

by onfact 2023. 11. 30.

Retention

 

git에서 JPA 프로젝트들을 참고하는 중 처음보는 어노테이션이 있어서 정리해볼까 합니다.

 

@Retention

 

 

@Retention 어노테이션은 어노테이션이 유지(retained)되는 범위를 나타냅니다. 

Java에서는 세 가지 RetentionPolicy가 있습니다.

 

1. SOURCE: 

어노테이션은 소스 코드에만 유지되며, 컴파일 시간에 제거됩니다. 

이 어노테이션은 컴파일 이후에는 더 이상 존재하지 않습니다.

 

2. CLASS:

어노테이션은 컴파일된 바이트코드(.class 파일)에 유지되지만,

런타임 시에는 사용할 수 없습니다. 즉, 실행 중에 리플렉션을 통해 어노테이션 정보에 접근할 수 없습니다.

※ 리플렉션(Reflection)은 프로그램이 자신의 구조를 동적으로 조사하고 수정하는 데 사용되는 프로그래밍 언어의 기능을 의미.

 

3. RUNTIME: 

어노테이션은 컴파일된 클래스 파일과 함께 런타임 시에도 유지되며, 

리플렉션을 통해 런타임에서도 어노테이션 정보에 접근할 수 있습니다.

 

Custom 어노테이션을 만드려면 보통 RUNTIME으로 설정하여, 런타임시에도 어노테이션 정보에 접근하는게 사용하는게 보편적인 듯 합니다. 

@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
    // 어노테이션 내용
}

 

감사합니다. 

 

'IT-Language > IT-Java' 카테고리의 다른 글

JAVA - AOP (관점지향 프로그래밍)  (0) 2024.04.10
어노테이션(Annotation) - @Target  (0) 2023.11.30
JAVA17 - switch  (0) 2023.11.05
java RuntimeException  (0) 2023.11.05
Java와 VC++ 동기화 비교  (0) 2023.11.05