1. @Component
가장 기본적인 스프링 빈 등록 애노테이션
@Component
public class MyComponent { }
- 컴포넌트 스캔 대상이 되며, 스프링 컨테이너가 관리하는 객체로 등록된다.
- 특별한 의미는 없지만 범용적으로 사용 가능하다.
2. @Controller
@Component의 특별한 버전으로 웹 요청을 처리하는 역할
@Controller
public class ProductController { }
- MVC 구조에서 컨트롤러 역할
- 클라이언트의 요청을 받고, 응답을 반환
- 주로 @RequestMapping, @GetMapping 등과 함께 사용
3. @Service
비즈니스 로직을 처리하는 클래스에 사용
@Service
@Service
public class ProductService { }
- @Component 포함
- 서비스 계층의 역할
- 트랜잭션 처리와 같은 핵심 로직 위치
4. @Repository
데이터 접근 계층(DAO)에 사용
@Repository
public class ProductRepository { }
- @Component 포함
- DB 관련 예외를 Spring의 DataAccessException으로 변환 (DB의 기본 예외 처리)
- MyBatis, JPA 등에서 많이 사용