Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
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
29 30
Tags
more
Archives
Today
Total
관리 메뉴

Jun's Ark

[step-12] 에노테이션 본문

카테고리 없음

[step-12] 에노테이션

차가운보리차 2021. 3. 30. 07:53

# 위치 : 'java.lang.annotation' 에 위치

 

# 사용 이유 : AOP를 쉽고 편하게 구현하기 위해

- 기존에는 XML에 명시 했는데 서비스 규모가 커짐에 따라 관리 하기가 힘들어 졌고 클래스에 직접 명시하게 되었다.

 

# 정의법 : 

public @interface SuppressWarnings {

}

 

# 문법 : @Override와 같이 @기호를 클래스, 메서드, 매개변수 등 상단에 붙여주기만하면 된다.

- Java5부터 등장

 

@Override
public int leeJun(int index){

}

@Test
void insertData(){

}

 

# 용도 : 문서화, 컴파일러 체크, 코드 분석과 자동 생성, 런타임 프로세싱 용도로 사용될 수 있다.

 

# 분류

- Maker 어노테이션 : 멤버 변수가 없고 컴파일러에게 의미를 전달하기 위한 표식으로 사용되는 어노테이션

- Single-value 어노테이션 : 멤버로 단일변수를 갖고 데이터를 전달할 수 있는 어노테이션

- Full 어노테이션 : 둘 이상의 변수를 갖는 어노테이션으로 데이터를 키 = 값 형태로 전달한다.

 

# 표준 어노테이션

- @Override : 해당 메서드가 오버라이딩 된 메서드라는 것을 컴파일러에게 알려준다.

- @FunctionalInterface : 함수형 인터페이스를 정의할 때 사용한다. 함수형 인터페이스는 단일 메서드를 가져야하는 규약이 있음

- @Deprecated : 더이상 사용이 권장하지 않는 경우 사용

- @SuppressWarnings : 컴파일러 경고메시지를 무시한다.

 

# 메타 어노테이션 : 어노테이션을 위한 어노테이션

- @Target : 해당 어노테이션이 어디에 적용될 수 있는지를 지정 ({}) 안에 콤마로 구분해서 지정한다.

대상 의미
ANNOTATION_TYPE 어노테이션
CONSTRUCTOR 생성자
FILED 필드 (맴버변수, enum 상수)
LOCAL_VARIABLE 지역변수
METHOD 메서드
PACKAGE 패키지
PARAMETER 매개변수
TYPE 타입(클래스, 인터페이스, enum)
TYPE_PARAMETER 타입 매개변수 (JDK 1.8)
TYPE_USE 타입이 사용되는 모든 곳(JDK 1.8)

- @Retention : 해당 어노테이션의 유효기간을 설정 즉, 어느 시점까지 어노테이션 정보를 메모리에 저장할 것인가를 정함

타입 의미
SOURCE 컴파일 전까지. 컴파일할 때 해당 어노테이션이 제거된다.
CLASS 바이너리 파일에 해당 어노테이션의 정보가 저장되지만 Runtime에서 사라진다.
RUNTIME 런타임에서 JVM이 해당 어노테이션에 대한 정보를 사용할 수 있다.

# 어노테이션 프로세서 : 컴파일을 할 때 내 코드를 낚아채서 새로운 클래스를 생성한다.

- javax.annotation.processing.Processor 라는 특별한 파일을 META-INF/servicesdp 위치시킨 뒤 .jar 파일로 패키징해서 제공한다.