본문 바로가기

SpringFramework Core - I. IoC 컨테이너/10. 클래스패스 스캐닝과 관리받는 컴포넌트들

10.1. @Component와 더 많은 Stereotype 어노테이션들

원문: https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-stereotype-annotations

 

 

@Repository 어노테이션은 DAO로 알려진 저장소의 역할 또는 stereotype을 수행하는 클래스를 위한 표시이다. 이 표시를 사용할 때에는 예외들의 번역이 자동적으로 이루어진다. 이는 '예외 번역'에 설명되어 있다.

 

스프링은 더 많은 stereotype 어노테이션들을 제공한다. @Component, @Service, @Controller와 같은 것들이다. @Component는 스프링의 관리를 받는 컴포넌트를 포괄하는 stereotype이다. @Repository, @Service, @Controller는 각각 퍼시스턴스 계층, 서비스 계층, 프레젠테이션 계층에 특정된 사용을 위해 @Component를 특화한 것들이다. 그러므로 컴포넌트 클래스들에 @Component를 붙일 수 있다. 하지만, @Repository, @Service, @Controller를 대신 붙임으로써 클래스들은 개발도구의 처리와 aspect와의 결합에 더 적합해진다. 예를 들어, 이 stereotype 어노테이션들은 포인트컷을 위한 이상적인 대상들을 만들어낸다. @Repository, @Service, @Controller는 추후에 배포될 스프링 프레임워크를 위해 추가적인 의미를 갖고있기도 하다. 그래서 만약 여러분이 서비스 계층에 @Component와 @Service 중 하나를 골라야 한다면 @Service가 분명 더 나은 선택이 될 것이다. 이미 언급했듯이, 이와 비슷하게 @Repository는 이미 퍼시스턴스 계층의 자동적인 예외 번역을 위한 표시로서 지원되고 있다.