커스텀 애노테이션: @Retension

Reading-Snail·2024년 2월 6일
0

💡 Qurious 팽이! 💡

목록 보기
10/14

우선, 애노테이션은 애노테이션 자체로서는 주석 그 이하도 이상도 아님을 알아야 합니다. 단, 일반적인 주석과 달리 그 대상이 컴퓨터가 읽는 주석이라고 생각하면 되는 부분입니다.

애노테이션에서 @Retension은 애노테이션의 유효한 범위를 알려줍니다. 즉, 스코프 설정입니다.

3가지 다른 설정이 가능한데 각각의 유효한 시점이 다릅니다.
source < class < runtime 순으로 범위가 넓어집니다.

  1. source: 소스에서만 유효합니다. 대표적인 예시는 lombok의 @Getter/@Setter로 java 파일의 소스를 변경할 때 사용됩니다.
  2. class: 컴파일 시점까지 유효합니다. 외부 라이브러리 파일들에 영향을 받을 경우 source에서 확장하여 class로 지정해야합니다.
  3. runtime: 웹을 예시로 들면 tomcat과 같은 서버에서 프로그램이 실행중일 때도 유효합니다. @Service, @Controller와 같이 빈 스캐닝 기능이 필요할 때 사용 될 수 있습니다.

즉, Runtime의 경우 모든 범위를 포괄하기에 항상 사용될 수 있지만 자원의 절약 및 최적화를 위해 source와 class를 코드의 의도에 맞게 함께 사용해주어야 합니다.

profile
책읽는 달팽이 || 공학도에서 개발자로! || 결국 과거의 흐름을 이해했을 때 지금의 것들을 통찰력있게 바라볼 수 있다고 믿습니다.

0개의 댓글

관련 채용 정보