일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 리눅스
- pandas
- java
- JPA
- mssql
- IntelliJ
- 자바
- MariaDB
- 트랜잭션
- PostgreSQL
- 티스토리챌린지
- MongoDB
- DBMS
- SQL
- Linux
- Javascript
- analytics4
- 호이스팅
- mysql
- Python
- git
- 추상클래스
- oracle
- docker
- rsync
- group by
- spring
- github
- 명령어
- 오블완
- Today
- Total
hanker
Java - Custom Annotation 만들기 (기본 개념과 구현 방법) 본문
Java 어노테이션은 클래스, 메서드, 필드 등 다양한 프로그램 요소에 메타데이터를 추가할 수 있는 강력한 도구이다.
내장 어노테이션뿐만 아니라, 상황에 맞게 직접 정의한 커스텀 어노테이션을 활용하면 코드의 가독성, 유지보수성, 그리고 다양한 프레임워크와의 연동을 더욱 용이하게 만들어 준다.
이번 글에서는 Java 커스텀 어노테이션의 개념과 정의방법, 그리고 사용 예제를 알아보자.
1. 커스텀 어노테이션
커스텀 어노테이션은 개발자가 직접 정의하는 메타데이터로, 코드에 추가적인 정보를 제공하여 컴파일 타임이나 런타임에 다양한 처리를 수행할 수 있게 도와준다.
예를 들어, 특정 메서드에 대한 문서화, 로깅, 검증 또는 프레임워크에서 자동으로 특정 기능을 적용하는 등의 역할을 할 수 있다.
2. 커스텀 어노테이션 정의하기
커스텀 어노테이션은 @interface 어노테이션을 사용하여 정의한다.
또한 어노테이션 적용 범위(Target)와 유지 정책(Retention Policy)을 지정하기 위해 @Target과 @Retention 메타 어노테이션을 사용한다.
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.ElementType;
// 어노테이션의 유지 정책을 RUNTIME으로 지정하면 런타임에도 어노테이션 정보를 유지할 수 있다.
@Retention(RetentionPolicy.RUNTIME)
// 어노테이션을 메서드에 적용하도록 지정
@Target(ElementType.METHOD)
public @interface MyAnnotation {
// 기본값이 있는 요소 정의 (필수 사항이 아닌 경우)
String value() default "default value";
// 추가적인 요소를 정의할 수도 있음
int number() default 0;
}
위 코드에서 MyAnnotation은 메서드에 적용할 수 있으며, value와 number라는 두 개의 요소를 포함한다.
각각 기본 값을 지정하여 사용자가 생략할 수 있도록 했다.
3. 커스텀 어노테이션 사용하기
이제 정의한 어노테이션을 사용해보자.
아래와 같이 메서드에 어노테이션을 붙여서 적용할 수 있다.
public class TestAnnotation {
@MyAnnotation(value = "테스트 메소드", number = 100)
public void test() {
System.out.println("테스트 메소드 실행");
}
}
import java.lang.reflect.Method;
public class Main {
public static void main(String[] args) {
try {
// TestAnnotation 클래스의 인스턴스 생성
TestAnnotation testObj = new TestAnnotation();
// TestAnnotation 클래스에서 'test' 메서드를 가져옴
Method method = TestAnnotation.class.getMethod("test");
// 메서드에 MyAnnotation 어노테이션이 적용되어 있는지 확인
if (method.isAnnotationPresent(MyAnnotation.class)) {
// 어노테이션 정보를 가져와 변수에 저장
MyAnnotation annotation = method.getAnnotation(MyAnnotation.class);
// 어노테이션의 요소 값 출력
System.out.println("어노테이션 value: " + annotation.value());
System.out.println("어노테이션 number: " + annotation.number());
}
// 어노테이션이 적용된 메서드 실행
method.invoke(testObj);
} catch (Exception e) {
e.printStackTrace();
}
}
}
리플렉션을 통해 어노테이션의 정보를 조회하고 메서드를 실행한 결과이다.
정리
이 예제는 TestAnnotation 클래스의 test() 메서드에 적용된 @MyAnnotation의 값을 리플렉션으로 읽어온 후, 해당 정보를 출력하고 마지막으로 test()메서드를 실행하였다.
기본적인 이해를 위해 간단하게 예제 코드를 만들었고, 더욱 더 활용하여 사용할 수 있다.
끝.
'JAVA' 카테고리의 다른 글
Java - Enum 클래스 사용법 (0) | 2025.02.22 |
---|---|
Java - Collection Framework의 꽃 Map 사용법 및 활용법 (0) | 2025.02.17 |
Java - Set 사용 법 (HashSet, TreeSet, LinkedHashSet) (0) | 2025.02.15 |
Java - List 인터페이스 (ArrayList, LinkedList, Vector 등) (1) | 2025.02.12 |
Java - 예외 처리의 활용 및 효율적인 관리 방법 (Custom Exception, Exception Propagation) (0) | 2025.02.10 |