@Meta Annotation에 대해서 알아보자

2023. 2. 24. 15:03BackEnd(Java)/Spring Boot

✅ 아래 내용들에 대해서 알아보자

- 메타 어노테이션이란
- 메타 어노테이션 종류
- 예시 코드

 

메타 어노테이션

 메타 어노테이션이란 java 코드에 메타 정보를 추가할 수 있는 구문의 한 형태. 클래스, 메서드, 변수, 매개변수 및 java 패키지에 어노테이션을 달 수 있다. 해당 어노테이션을 jvm 런타임 및 리플렉션을 통해 읽게 된다.

 

 

메타 어노테이션 종류

1. @Target 

 어노테이션을 어떤 요소에 적용할지 지정

@Target(ElementType.TYPE) 클래스의 어떤 요소에나 적용 가능, 기본값
@Target(ElementType.FIELD) 클래스의 특정 필드
@Target(ElementType.METHOD) 클래스의 메서드
@Target(ElementType.PARAMETER) 메서드의 파라미터
@Target(ElementType.CONSTRUCTOR) 생성자
@Target(ElementType.LOCAL_VARIABLE) 로컬 변수
@Target(ElementType.ANNOTATION_TYPE) 어노테이션 타입

 

2. @Retention

 어노테이션이 얼마나 유지될지 범위를 지정

@Retention.SOURCE 어노테이션이 소스 코드에만 이용 가능하며 컴파일 후에는 메모리에서 사라짐
@Retention.CLASS 어노테이션이 .class파일에 존재하지만 런타임에는  사라짐
@Retention.RUMTIME 어노테이션이 런타임까지 남아있음

 

3. @Inherited

 서브 클래스가 부모 어노테이션을 상속받도록 한다

 

4. @Documented

 해당 어노테이션을 javadoc에 포함한다.

 

 

 

예시 코드

 Configuration 어노테이션을 보면 @Target = ElementType.TYPE, @Retention = RUNTIME 이란 것을 알 수 있다.

따라서 해당 어노테이션은 클래스의 어떤 요소에든 적용 가능하고, 어노테이션이 런타임까지 남아 있는 것을 알 수 있다.

 

 

 

 


참고자료

반응형

'BackEnd(Java) > Spring Boot' 카테고리의 다른 글

JWT & OAuth 정리  (0) 2023.06.01
스프링 IoC/DI 찍먹  (0) 2023.02.24
스프링 이벤트 처리  (0) 2023.01.20
Doesn't say anything about org.gradle.plugin.api-version (required '7.6')  (0) 2023.01.03
@Async에 대한 이해  (0) 2022.11.21