Spring에서 @Annotation은 다양한 기능을 지원하며, 주로 의존성 주입(Dependency Injection)과 관련된 설정을 간결하게 할 수 있도록 도와준다.
주요 어노테이션들을 정리해보자면 아래와 같다.
- @Component: 이 Annotation은 해당 클래스가 Spring 컨테이너의 구성 요소임을 나타낸다. 다른 구체적인 Annotation들(예: @Controller, @Service, @Repository)은 @Component를 확장하며, 각각 특정 계층의 빈(bean)을 정의하는 데 도움을 준다.
- @Autowired: 이 Annotation은 의존성 주입(Dependency Injection)을 자동화하는 데 사용된다.
Spring은 @Autowired가 붙은 필드나 생성자, 메서드 매개변수 등을 보고 해당 타입에 맞는 빈을 주입한다.
요즘은 @RequiredArgsConstructor와 private final을 이용해 의존성 주입하는 걸 권장한다. - @Configuration: 이 Annotation은 Java 기반의 설정 클래스임을 나타내며, Spring IoC 컨테이너에게 빈을 정의하고 반환하는 메서드를 제공한다.
- @Bean: 이 Annotation은 Spring 컨테이너에 의해 관리되는 객체(빈)를 정의하는 메서드에 붙인다. @Bean이 붙은 메서드는 해당 메서드가 반환하는 객체를 Spring IoC 컨테이너에 등록하게 된다.
- @RequestMapping: 이 Annotation은 Spring MVC에서 HTTP 요청을 처리하는 메서드를 지정한다. URL 패턴, HTTP 메서드 등을 설정하여 어떤 요청을 처리할지 결정할 수 있다.
- @Service, @Repository, @Controller: 각각 비즈니스 로직(Service), 데이터 액세스 계층(Repository), 웹 요청 처리(Controller)을 담당하는 클래스임을 명시한다. 이러한 Annotation들은 @Component를 확장하므로, 해당 클래스들이 Spring의 컴포넌트 스캔을 통해 자동으로 빈으로 등록된다.
- @Transactional: 이 Annotation은 메서드나 클래스에 트랜잭션 기능을 추가한다. 메서드 내에서 실행되는 모든 데이터 액세스 작업을 하나의 트랜잭션으로 묶어준다.
이 외에도 많은 Annotation들이 있고 각각이 특정 기능을 활성화하거나 Spring 프레임워크의 설정을 더욱 효율적으로 관리할 수 있게 해준다.
'Back-end > Spring' 카테고리의 다른 글
Spring에서의 예외 처리 (0) | 2024.07.10 |
---|---|
@Transactional (0) | 2024.05.11 |