포도가게의 개발일지
[JAVA] Annotation? 본문
반응형
Annotation(주석)?
- 프로그램에게 추가적인 정보를 제공해주는 메타데이터(meta data: 데이터 설명을 위한 데이터)
용도
- 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공
- 소프트웨어 개발툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보 제공
- 실행시(런타임시)특정 기능을 실행하도록 정보를 제공
어노테이션을 사용하는 순서는 다음과 같다.
1. 어노테이션의 정의
2. 클래스에 어노테이션을 배치
3. 코드가 실행되는 중에 Reflection을 이용하여 추가정보를 획득하여 기능실시
1. 어노테이션의 정의
@Target({ElementType.[적용대상]})
@Retention(RetentionPolicy.[정보유지되는 대상])
public @interface annotationName{
public 타입 elementName() [default 값]
...
}
// 어디서 어노테이션을 붙일 수 있는지 target으로 정해줌
public enum ElementType {
TYPE, // 클래스, 인터페이스, 열거 타입
FIELD, // 필드
METHOD, // 메소드
PARAMETER,
CONSTRUCTOR, // 생성자
LOCAL_VARIABLE, // 로컬변수
ANNOTATION_TYPE, // 어노테이션
PACKAGE, // 패키지
TYPE_PARAMETER,
TYPE_USE,
MODULE;
private ElementType() {
}
}
// 어노테이션이 언제까지 존재할수있는지 정해줌
public enum RetentionPolicy {
SOURCE, // 컴파일을 통해 바이트코드가 되기전까지만 존재
CLASS, // 컴파일 후 바이트코드에는 남아있지만 runtime시 리플렉션을 통해 읽지 못함
RUNTIME; // 컴파일 후 바이트코드에도 남고 runtime시 리플렉션을 통해 읽을 수 있음
private RetentionPolicy() {
}
}
2. 클래스에 어노테이션을 배치
- 어노테이션의 사용은 클래스를 참고하는 소스의 흐름상에서 Reflection을 사용하는 방법을 통해서 어노테이션 값을 활용하도록 한다. 말로는 설명이 애매하니 예제 소스를 작성하도록 한다.
'Spring boot' 카테고리의 다른 글
[JAVA] Generic (0) | 2022.01.21 |
---|---|
[Spring]Transaction? (0) | 2022.01.20 |
[JAVA] 빌드 과정 (0) | 2022.01.13 |
[JAVA] LOMBOK이란? (0) | 2022.01.12 |
[Spring] 생성자주입? 필드주입? 세터주입? (0) | 2022.01.05 |
Comments