Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- lambda
- java
- select_type
- hashcode
- stream
- MSA
- 열 속성
- 생성자 주입
- jpa
- VUE
- 재정의
- KEVISS
- DI
- jwt
- docker
- Spring
- static
- DDL
- 바이너리 카운팅
- 인덱스
- AOP
- 테스트 코드
- SQL
- StringBuilder
- equals
- 필드 주입
- 조합
- cache
- Test
- redis
Archives
- Today
- Total
백엔드 개발자 블로그
Custom Annotation 본문
사용자 정의 어노테이션 (Custom Annotation)
사용자가 직접 정의하여 사용하는 어노테이션이다. 프레임워크나 API 등을 만들어 사용할 때 주로 사용한다.
사용자 정의 어노테이션 정의
사용자 정의 어노테이션을 사용하기 위해 @interface를 통해 어노테이션 클래스를 작성할 수 있다.
어노테이션은 내부에 값을 가질 수 있으며, 값을 설정할 수 있다. 값을 설정하기 위해서는 default 값 형태로 설정한다.
import java.lang.annotation.*;
// 메타 어노테이션을 활용하여 사용자 정의 어노테이션 선언
@Target(ElementType.TYPE) // 어노테이션 적용 대상 Type으로 설정
@Retention(RetentionPolicy.RUNTIME) // 런타임 시까지 어노테이션을 사용
public @interface CustomAnnotation {
int age() default 20; // default로 20 설정
String name();
}
사용자 정의 어노테이션 사용
import java.lang.annotation.*;
// 어노테이션 값을 사용하기 위한 클래스 생성
@CustomAnnotation(name = "홍길동") // 사용과 동시에 값 설정 가능
class MyInfo {
}
public class PrintMyInfo {
public static void main(String[] args) {
PrintMyInfo myInfo = new PrintMyInfo();
myInfo.print(new MyInfo());
}
void print(MyInfo myInfo) {
Annotation[] annotations = MyInfo.class.getDeclaredAnnotations();
for(Annotation i : annotations) {
if (i instanceof CustomAnnotation) {
CustomAnnotation customAnnotation = (CustomAnnotation) i;
System.out.println(customAnnotation.name() + " " + customAnnotation.age());
}
}
}
}
// 출력
홍길동 20
사용자 정의 어노테이션을 선언할 때 메타 어노테이션을 함께 사용할 수 있다.
@Target
어노테이션을 정의할 때 적용 대상을 지정하는 데 사용한다.
@Documented
어노테이션 정보를 javadoc으로 작성된 문서에 포함시킨다.
@Inherited
어노테이션이 하위 클래스에 상속되도록 한다.
@Retention
어노테이션이 유지되는 기간을 정하기 위해 사용한다.
@Repeatable
어노테이션을 반복해서 적용할 수 있도록 한다.
출처: https://ittrue.tistory.com/158 [IT is True:티스토리]