본문 바로가기

프로그래밍/Spring & MyBatis

[Spring] 어노테이션 Annotation

1. 어노테이션 의미


 - 어노테이션(annotation)은 자바 1.5버전부터 지원되는 기능으로 일종의 메타데이터(metadata)다.

 - 어노테이션의 사전적 의미는 '주석'이며, 주석처럼 코드에 추가해서 사용할 수 있으며, 컴파일 또는 런트임시에 해석 된다.


2. 어노테이션 만들기

 - 어노테이션은 다음과 같이 interface에 @를 붙여서 선언하고, 어노테이션이 적용될 대상과 동작 방식을 지정할 수 있다.

   

  @Target(ElementType.Method)

  @Retention(RetentionPolicy.RUNTIME)

  Public @Interface MyAnnotation{

String str() default "";

}


  - 여기서 Target은 어노테이션이 적용되는 대상을 의미하는데 ElementType의 요소 중에서 선택하여 지정한다.

    주로 메서드를 만힝 사용하며 @Target 어노테이션에 사용되는 목록은 다음과 같다


어노테이션 요소 목록

 대상 요소명

적용 대상 

TYPE 

클래스 및 인터페이스 

FIELD

클래스의 멤버 변수 

METHOD 

메서드 

PARAMETER

파라미터 

CONSTRUCTOR

생성자 

LOCAL_VARIABLE

지역변수 

ANNOTATION_TYPE 

어노테이션 타입 

PACKAGE 

패키지 

TYPE_PARAMETER

타입 파라미터 

TYPE_USE

타입 사용 


 - Retention은 어노테이션이 적용될 범위를 결정하는데 세 가지 유형이 있다.

  ○ Class : 어노테이션 작성시 기본값으로 클래스 파일에 포함되지만 JVM이 로드하지 않음

  ○ Runtime : 클래스 파일에 포함되고, JVM이 로드해서 리플렉션 API로 참조 가능하다.

  ○ Source : 컴파일 때만 사용되고, 클래스 파일에 포함되지 않는다.