우선, 애노테이션은 애노테이션 자체로서는 주석 그 이하도 이상도 아님을 알아야 합니다. 단, 일반적인 주석과 달리 그 대상이 컴퓨터가 읽는 주석이라고 생각하면 되는 부분입니다.
애노테이션에서 @Retension은 애노테이션의 유효한 범위를 알려줍니다. 즉, 스코프 설정입니다.
3가지 다른 설정이 가능한데 각각의 유효한 시점이 다릅니다.
source < class < runtime 순으로 범위가 넓어집니다.
즉, Runtime의 경우 모든 범위를 포괄하기에 항상 사용될 수 있지만 자원의 절약 및 최적화를 위해 source와 class를 코드의 의도에 맞게 함께 사용해주어야 합니다.