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 |