#애노테이션(Annotation) ?
자바에서 코드에 메타데이터를 추가하는 기능을 제공하는 요소입니다.
메타데이터는 데이터를 설명하는 데이터로, 애노테이션은 컴파일러, 개발 도구, 프레임워크 등에게
특정한 정보를 제공하거나 처리 방식을 지시하는데 사용됩니다.
애노테이션의 주요 특징과 사용 방법은 다음과 같습니다:
1. `@` 기호로 시작합니다:
애노테이션은 `@` 기호를 사용하여 소스 코드에 표시됩니다.
예를 들면 `@Override`, `@Deprecated` 등이 있습니다.
2. JDK에서 제공하는 미리 정의된 애노테이션과 사용자가 직접 정의한 커스텀 애노테이션을 만들 수 있습니다.
3. 컴파일러와 런타임에서 사용됩니다:
애노테이션은 컴파일러가 소스 코드를 처리하는 단계에서 정보를 활용하며,
런타임 환경에서도 애노테이션 정보를 유지할 수 있습니다.
4. 리플렉션을 통해 처리될 수 있습니다:
리플렉션은 실행 시점에 클래스의 정보를 검사하고,
애노테이션을 분석하여 메타데이터를 활용할 수 있게 해줍니다.
애노테이션은 주로 다음과 같은 목적으로 사용됩니다:
- `@Override`: 메서드가 상위 클래스의 메서드를 오버라이드(재정의)하는 것을 나타냅니다.
- `@Deprecated`: 특정 요소(클래스, 메서드, 변수 등)가 더 이상 권장되지 않는다는 것을 표시합니다.
- 프레임워크에서 사용되는 애노테이션: 스프링 프레임워크와 같은 프레임워크는 애노테이션을 활용하여
빈(Bean) 등록, 의존성 주입 등을 처리합니다.
애노테이션은 코드에 메타데이터를 추가함으로써,
컴파일러와 런타임 환경에서 특정 작업을 수행하거나 추가 정보를 제공하는 강력한 기능으로,
자바 언어에서 많이 활용되고 있습니다.
#자주 사용되는 몇 가지 표준 애노테이션과 커스텀 애노테이션의 예제
1. 자주 사용되는 표준 애노테이션:
- `@Override`: 메서드가 상위 클래스의 메서드를 오버라이드(재정의)하는 것을 나타냅니다. 컴파일러는 이 애노테이션을 통해 오버라이딩이 제대로 되었는지를 검사합니다.
- `@Deprecated`: 특정 요소(클래스, 메서드, 변수 등)가 더 이상 권장되지 않는다는 것을 표시합니다. 개발자들에게 해당 요소를 사용하지 말라고 경고를 주는데 사용됩니다.
- `@SuppressWarnings`: 컴파일러의 경고 메시지를 억제할 때 사용됩니다. 예를 들어, 경고가 나타날 수 있는 상황에 사용하여 해당 경고를 숨길 수 있습니다.
2. 커스텀 애노테이션 예제:
- 로깅 애노테이션:
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Log {
String value() default "INFO";
}
위의 `@Log` 커스텀 애노테이션은 메서드에 적용하여 해당 메서드가 호출될 때
로그를 출력하도록 지정하는데 사용할 수 있습니다.
`value()` 멤버 변수를 통해 로그 레벨을 지정할 수 있습니다.
- 트랜잭션 애노테이션:
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Transactional {
String value() default "default";
}
위의 `@Transactional` 커스텀 애노테이션은 메서드에 적용하여
해당 메서드가 트랜잭션을 처리하도록 지정하는데 사용할 수 있습니다.
`value()` 멤버 변수를 통해 트랜잭션 이름을 지정할 수 있습니다.
이러한 커스텀 애노테이션들은 자주 사용되는 패턴에 따라 개발자가 직접 정의하여
프로그램을 더 효율적으로 구성하고 가독성을 높일 수 있습니다.
스프링 프레임워크와 같은 프레임워크들은 커스텀 애노테이션을 활용하여 많은 기능을 제공합니다.
커스텀 애노테이션은 개발자가 자신의 프로젝트에 맞게 유연하게 사용할 수 있으며,
코드의 재사용성과 유지보수성을 높여줍니다.
#결론적으로,
애노테이션(Annotation)은 자바에서 코드에 메타데이터를 추가하는 기능을 제공하는 요소입니다.
메타데이터는 데이터를 설명하는 데이터로, 애노테이션은 컴파일러, 개발 도구,
프레임워크 등에게 특정한 정보를 제공하거나 처리 방식을 지시하는데 사용됩니다.
주로 코드에 주석과 비슷하게 정보를 담고 있지만, 주석과는 달리 컴파일러와 런타임에서 처리되어
코드에 직접적인 영향을 미칩니다.
애노테이션은 @ 기호로 시작하며, JDK에서 제공하는 미리 정의된 애노테이션과 개발자가
직접 정의한 커스텀 애노테이션을 만들 수 있습니다. 애노테이션은 컴파일러와 런타임에 사용되며,
리플렉션을 통해 런타임 시에 애노테이션 정보를 동적으로 읽어올 수 있습니다.
자바에서 애노테이션은 다양한 용도로 사용됩니다. 자주 사용되는 표준 애노테이션으로는 @Override, @Deprecated, @SuppressWarnings 등이 있으며,
이러한 애노테이션은 컴파일러에게 특정 작업을 지시하거나 경고를 제어하는데 사용됩니다.
또한, 개발자가 직접 커스텀 애노테이션을 만들어 프로그램의 특정 기능을 지정하거나
처리 방식을 추가할 수 있습니다.
애노테이션은 코드의 가독성을 높이고 유지보수성을 개선하며,
프레임워크나 라이브러리에서 기능을 추가하거나 특정 작업을 수행하는데 매우 유용한 도구로 사용됩니다.
커스텀 애노테이션을 활용하면 자신의 프로젝트에 맞는 유연하고 강력한 기능을 추가할 수 있습니다.