인프런워밍업스터디_BE_1일차_과제

오현석·2024년 2월 18일

문제 1 - 어노테이션을 사용하는 이유

소스코드에 메타 데이터를 넣어주는 기능을 한다. 강사님께서는 마법같은 일을 해준다고 표현했다. 예를 들어 Override, RestController처럼 컴파일러에게 문법 체크를 하도록 알리는 기능도 한다.

문제 2 - 어노테이션 커스텀하는 방법

  1. 인터페이스를 작성하되, 인터페이스 앞에 @를 붙여 생성한다. 이 과정에서 생성된 어노테이션은 아무런 기능이 없다.
  2. 필요한 메타 어노테이션을 인터페이스 앞에 붙여준다.
  3. 추가적으로 사용할 어노테이션을 추가해준다.
  4. 변수가 필요하다면 블록 내에 변수를 선언한다.

[ Meta 어노테이션의 종류 ]

Retention: 해당 어노테이션의 정보를 어느 범위까지 유지할 것인지를 설정함
RetentionPolicy.SOURCE: 컴파일 전까지만 유효하며 컴파일 이후에는 사라짐
RetentionPolicy.CLASS: 컴파일러가 클래스를 참조할 때까지 유효함
RetentionPolicy.RUNTIME: Reflection을 사용하여 컴파일 이후에도 JVM에 의해 계속 참조가 가능함

Documented: JavaDoc 생성 시 Document에 포함되도록 함
Target: 해당 어노테이션이 사용되는 위치를 결정함

ElementType.PACKAGE : 패키지 선언시
ElementType.TYPE : 타입 선언시
ElementType.CONSTRUCTOR : 생성자 선언시
ElementType.FIELD : 맴버 변수 선언시
ElementType.METHOD : 메소드 선언시
ElementType.ANNOTATION_TYPE : 어노테이션 타입 선언시
ElementType.LOCAL_VARIABLE : 지역 변수 선언시
ElementType.TYPE_PARAMETER : 매개 변수 타입 선언시

Inherited: 해당 어노테이션을 하위 클래스에 적용함
Repeatable: Java8부터 지원하며, 연속적으로 어노테이션을 선언하는 것을 허용함

출처: https://mangkyu.tistory.com/130 [MangKyu's Diary:티스토리]

profile
Backend Engineer(FastAPI, Spring, ...) / Prompt & Context Engineer / DevOps

0개의 댓글