Meta 어노테이션
- 다른 어노테이션에 적용 되는 어노테이션
어노테이션은 Java 코드에 메타데이터를 제공하는 방법으로, 코드의 동작 방식을 알려주거나 수정하는 데 사용됩니다.
Meta 어노테이션은 다른 어노테이션에 적용되는 어노테이션을 말합니다.
메타-어노테이션은 주로 어노테이션의 동작 방식을 정의하거나 수정하는 데 사용됩니다.
Java에서의 메타-어노테이션
Java 자체도 메타-어노테이션을 제공하며, 다음과 같은 것들이 있습니다
-
@Target
- 해당 어노테이션이 적용될 수 있는 Java 요소의 유형을 지정합니다.
- 예를 들어, 클래스, 메서드, 필드 등에 대해 적용할 수 있습니다.
-
@Retention
- 어노테이션이 어디까지 유지될지 정의합니다.
- 소스 코드, 클래스 파일, 런타임 등에서 유지될 수 있습니다.
-
@Inherited
- 어노테이션이 클래스에 적용될 때, 해당 클래스를 상속받은 하위 클래스도 동일한 어노테이션을 가지게 하는 속성입니다.
-
@Documented
- 해당 어노테이션이 Javadoc과 같은 문서에 포함되어야 함을 지시합니다.
이러한 메타-어노테이션은 코드를 간결하게 만들고, 코드의 명시성과 가독성을 높이는데 크게 기여합니다.
따라서 메타-어노테이션은 Java 뿐만 아니라 다양한 프레임워크에서 일반적으로 사용되는 중요한 개념입니다.
예제
용자 정의 어노테이션 @MyAnnotation
을 정의하는 예제입니다.
여기서는 @Target
과 @Retention
이라는 메타-어노테이션을 사용합니다.
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
// @Target 메타-어노테이션은 이 어노테이션이 적용될 수 있는 요소를 지정합니다.
@Target(ElementType.METHOD) // 이 어노테이션은 메서드에만 적용 가능하도록 설정했습니다.
// @Retention 메타-어노테이션은 이 어노테이션의 생명 주기, 즉 어디까지 유지될 것인지를 정의합니다.
@Retention(RetentionPolicy.RUNTIME) // 이 어노테이션은 런타임까지 유지되도록 설정했습니다.
public @interface MyAnnotation {
String value() default ""; // 'value'라는 기본 매개변수를 가지며, 기본값은 빈 문자열입니다.
}
이렇게 정의한 @MyAnnotation
은 아래와 같이 사용할 수 있습니다
public class MyClass {
@MyAnnotation("Hello, World!") // 사용자 정의 어노테이션을 메서드에 적용합니다.
public void myMethod() {
// 메서드 내용
}
}
이런 식으로 메타-어노테이션은 우리가 사용자 정의 어노테이션을 만들 때 그 동작 방식을 제어하는 데 사용됩니다.
부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>
728x90
'DEV > Java' 카테고리의 다른 글
@Component (0) | 2023.07.10 |
---|---|
SQL 조인에 대한 이해 - Outer Join과 Inner Join (0) | 2023.07.07 |
IoC (0) | 2023.07.07 |
DispatcherServlet은 어떻게 View와 Controller를 구별할까 (0) | 2023.07.05 |
DispatcherServlet 왜 필요한가 (0) | 2023.07.05 |