카테고리 없음

@Component의 진화: @Controller, @Service, @Repository

Tech_JINI 2025. 5. 12. 18:40

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 등에서 많이 사용