Annotation 이란?
Annotation(@)은 사전적 의미로는 주석이라는 뜻이다.
자바에서 Annotation은 코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 수행하도록 하는 기술이다.
즉, 프로그램에게 추가적인 정보를 제공해주는 메타데이터라고 볼 수 있다.
* meta data : 데이터를 위한 데이터
다음은 어노테이션의 용도를 나타낸 것이다.
컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공한다.
소프트웨어 개발 툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보를 제공한다.
실행시(런타임시)특정 기능을 실행하도록 정보를 제공한다.
기본적으로 어노테이션을 사용하는 순서는 다음과 같다.
- 어노테이션을 정의한다.
- 클래스에 어노테이션을 배치한다.
- 코드가 실행되는 중에 Reflection을 이용하여 추가 정보를 획득하여 기능을 실시한다.
이때, "Reflection(리플렉션)"은 주로 소프트웨어 개발과 프로그래밍에서 사용되는 개념으로, 프로그램이 자기 자신을 조사하고 수정할 수 있는 능력을 가리킨다. 이것은 프로그램이 런타임(runtime) 중에 자신의 구조, 클래스, 메서드 등에 대한 정보를 검사하거나 조작할 수 있는 기능을 의미한다.
SpringBoot의 대표적인 Annotation과 그 역할
1. @Component: 스프링 컨테이너에게 해당 클래스를 스프링 빈으로 등록하라고 지시한다. 이 어노테이션을 사용하면 클래스를 자동 검색하고 빈으로 등록할 수 있다.
2. @Controller: Spring MVC 웹 애플리케이션에서 컨트롤러 클래스를 정의할 때 사용한다. HTTP 요청을 처리하고 뷰를 렌더링하는 데 도움을 준다.
3. @Service: 비즈니스 로직을 처리하는 서비스 클래스를 정의할 때 사용한다. 주로 서비스 레이어에서 사용된다.
4. @Repository: 데이터 액세스 객체(DAO)를 정의할 때 사용한다. 데이터베이스와 상호 작용하고 데이터 조작을 담당한다.
5. @Autowired: 의존성 주입을 수행한다. 이 어노테이션을 사용하여 스프링이 필요한 의존성을 주입하도록 지시할 수 있다.
6. @Configuration: 스프링 빈 구성 파일을 정의할 때 사용한다. Java 기반 구성을 선언적으로 지정하는 데 사용된다.
7. @Bean: @Configuration 클래스 내에서 빈을 정의할 때 사용한다. 스프링 컨테이너에 수동으로 빈을 추가할 수 있다.
8. @Qualifier: 여러 구현 중에서 어떤 빈을 주입할지 지정한다. @Autowired와 함께 사용된다.
9. @Value: 프로퍼티 파일에서 값을 주입하거나, 환경 설정 정보를 빈에 주입할 때 사용된다.
10. @RequestMapping: Spring MVC에서 웹 요청을 처리하는 메서드를 정의할 때 사용한다. URL과 메서드를 매핑한다.
11. @Transactional: 트랜잭션 관리를 위해 사용된다. 메서드나 클래스에 이 어노테이션을 붙이면, 메서드 호출은 트랜잭션으로 감싸진다.
12. @Secured, @PreAuthorize, @PostAuthorize: 보안 관련 어노테이션으로, 메서드나 클래스의 접근 권한을 지정한다.
13. @Scheduled: 일정한 주기로 메서드를 실행하기 위해 사용된다. 예를 들어, 일정한 주기로 배치 작업을 수행하는 데 유용하다.
14. @Async: 비동기 메서드 호출을 정의한다. 메서드가 비동기로 실행될 수 있도록 한다.
'Spring' 카테고리의 다른 글
[Spring] web.xml 한글 필터 (0) | 2024.05.20 |
---|---|
[Spring] File Upload (0) | 2024.05.20 |
[Spring] Maven Project (0) | 2024.05.20 |
[Spring] Annotation(Lombok) (0) | 2024.05.20 |
[Spring] MVC (0) | 2024.05.20 |