어노테이션(Annotation)이란?
- 사전적 의미로는 주석이라는 뜻이다.
- 코드 사이에 주석처럼 쓰여서 특별한 의미, 기능을 수행하도록 하는 기술이다.
- 컴파일, 런타임 시에 해석이 될 수 있다.
어노테이션을 적용할 때는 어노테이션이 어디에 적용되며 언제까지 어노테이션 소스가 유지될 것인지를 설정하여야 하는데 소스코드에는 다음과 같이 어노테이션을 정의해 주면 된다.
@Target({ElementType.[적용대상]})
@Retention(RetentionPolicy.[정보유지되는 대상])
public @interface [어노테이션명]{
public 타입 elementName() [default 값]
...
}
@Target에는 어떠한 값(ex : 클래스, 필드, 메서드 ...)에 어노테이션을 적용할 것이지 나타낼 수 있는데 넣을 수 있는 값은 다음 표와 같다.
ElementType 열거 상수 | 적용대상 |
TYPE | 클래스, 인터페이스, 열거 타입 |
ANNOTATION_TYPE | 어노테이션 |
FIELD | 필드 |
CONSTRUCTOR | 생성자 |
METHOD | 메소드 |
LOCAL_VARIABLE | 로컬 변수 |
PACKAGE | 패키지 |
@Retention에는 어노테이션 값들을 언제까지 유지할 것인지 값을 입력하는데 각 값이 가지는 의미는 다음 표와 같다. 보통 어노테이션은 Runtime시에 많이 사용하므로 대부분의 어노테이션의 Retention 값은 RUNTIME으로 되어있다.
RetentionPolicy 열거상수 | 설명 |
SOURCE | 소스상에서만 어노테이션 정보를 유지한다. 소스 코드를 분석할 떄만 의미가 있으면, 바이트 코드 파일에는 정보가 남지 않는다. |
CLASS | 바이트 코드 파일까지 어노테이션 정보를 유지한다. 하지만 리플렉션을 이용해서 어노테이션 정보를 얻을 수는 없다. |
RUNTIME | 바이트 코드 파일까지 어노테이션 정보를 유지하면서 리플렉션을 이용해서 런타임에 어노테이션 정보를 얻을 수 있다. |
Spring에서 사용해본 어노테이션 종류
@Configuration
- Spring 설정 클래스 라는 의미를 가지를 클래스
- IoC 와 DI를 적용하게 된다.
@Bean
- AnnotationConfigApplicationContext이 Config를 읽어들여 IoC, DI 를 적용할 때 읽어들이는 클래스
@ComponentScan("패키지 위치")
- 어노테이션이 붙어있는 모든 것을 찾아서 등록해주는 클래스
- 컨트롤러, 서비스, 리포지토리, 컴포넌트 등 어노테이션 클래스를 읽어들인다.
'Study > Java&Spring' 카테고리의 다른 글
AppConfig (0) | 2021.07.17 |
---|---|
객체 지향 프로그래밍 (0) | 2021.07.15 |
Maven plug in error (0) | 2021.06.24 |
Scope (0) | 2021.06.17 |
JSP (0) | 2021.06.17 |