T_era
블스뜸
« 2026/01 »
| 일 |
월 |
화 |
수 |
목 |
금 |
토 |
| |
|
|
|
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 |
31 |
관리 메뉴
T_era
Spring 어노테이션 정리 본문
@Component
- Spring Bean으로 등록하는 역할을 수행한다.
- Spring Bean은 애플리케이션의 구성 요소를 정의하는 객체이다.
- @Indexed 어노테이션과 함께 사용될 경우, 컴포넌트 스캔 시 Spring Bean으로 더욱 빠르게 등록되도록 돕는다.
- Spring Bean 및 컴포넌트 스캔 관련 내용은 숙련 주차 강의에서 상세히 다룰 예정이다.
@Target
- 하위 어노테이션이 적용될 수 있는 범위를 설정하는 메타 어노테이션이다.
- java.lang.annotation.ElementType Enum 속성을 사용하여 적용 대상을 지정한다.
ElementType Enum 속성
- TYPE: 클래스, 인터페이스, 어노테이션 타입, 열거형에 적용 가능하다.
- FIELD: 필드 (클래스 변수, 인스턴스 변수)에 적용 가능하다.
- METHOD: 메서드에 적용 가능하다.
- PARAMETER: 메서드 파라미터에 적용 가능하다.
- CONSTRUCTOR: 생성자에 적용 가능하다.
- LOCAL_VARIABLE: 지역 변수에 적용 가능하다.
- ANNOTATION_TYPE: 어노테이션 타입 선언 (메타 어노테이션 정의 시 사용)에 적용 가능하다.
- PACKAGE: 패키지 선언에 적용 가능하다.
- TYPE_PARAMETER: 타입 파라미터 (제네릭 타입 선언 시 <T>)에 적용 가능하다.
- TYPE_USE: 타입이 사용되는 모든 곳 (Java 8 이상)에 적용 가능하다.
@Retention
- 하위 어노테이션이 유지되는 기간을 결정하는 메타 어노테이션이다.
- java.lang.annotation.RetentionPolicy Enum 속성을 사용하여 유지 정책을 지정한다.
RetentionPolicy Enum 속성
- SOURCE: 소스 코드에서만 유지되며, 컴파일 시 제거된다.
- CLASS: 컴파일된 클래스 파일에 저장되지만, 런타임 시 JVM이 읽지 않는다 (기본값).
- RUNTIME: 클래스 파일에 저장되고, 런타임 시 JVM이 읽어 런타임 코드에 영향을 준다.
@Documented
- Javadoc 등의 문서화 도구에 의해 문서화되어야 함을 나타내는 메타 어노테이션이다.
@Controller 다시보기
- @Target(ElementType.TYPE): 클래스, 인터페이스, 어노테이션, 열거형, 레코드 (Java 16)에 적용 가능하다.
- @Retention(RetentionPolicy.RUNTIME): 런타임 시까지 유지된다.
- @Documented: 문서화 대상이다.
- @Component: Spring Bean으로 등록되며 (싱글톤 관리), 하위 어노테이션이다.
- @AliasFor(annotation = Component.class): value 속성은 @Component의 value 속성과 동일한 의미를 가진다.
@RestController 다시보기
- @Target(ElementType.TYPE): 클래스, 인터페이스, 어노테이션, 열거형, 레코드 (Java 16)에 적용 가능하다.
- @Retention(RetentionPolicy.RUNTIME): 런타임 시까지 유지된다.
- @Documented: 문서화 대상이다.
- @Controller와 @ResponseBody가 결합된 어노테이션이다.
- @Controller 어노테이션을 포함하며, 각 메서드에 @ResponseBody를 명시하지 않아도 HTTP 응답 본문에 직접 데이터를 반환한다.
- @AliasFor(annotation = Controller.class): value 속성은 @Controller의 value 속성과 동일한 의미를 가진다.