Home [Spring] 1.10.1. @Component and Further Stereotype Annotations

[Spring] 1.10.1. @Component and Further Stereotype Annotations

1.10.1. @Component and Further Stereotype Annotations

The @Repository annotation is a marker for any class that fulfills the role or stereotype of a repository (also known as Data Access Object or DAO). Among the uses of this marker is the automatic translation of exceptions, as described in Exception Translation.

  • @Repository annotation은 repository(Data Access Object 또는 DAO라고도 함)의 역할이나 stereotype을 충족하는 모든 클래스의 마커(marker)이다.
  • 이 마커(marker)의 사용으로는 Exception Translation에 설명된 대로 automatic translation of exceptions이 있다.

Spring provides further stereotype annotations: @Component, @Service, and @Controller. @Component is a generic stereotype for any Spring-managed component. @Repository, @Service, and @Controller are specializations of @Component for more specific use cases (in the persistence, service, and presentation layers, respectively). Therefore, you can annotate your component classes with @Component, but, by annotating them with @Repository, @Service, or @Controller instead, your classes are more properly suited for processing by tools or associating with aspects. For example, these stereotype annotations make ideal targets for pointcuts. @Repository, @Service, and @Controller can also carry additional semantics in future releases of the Spring Framework. Thus, if you are choosing between using @Component or @Service for your service layer, @Service is clearly the better choice. Similarly, as stated earlier, @Repository is already supported as a marker for automatic exception translation in your persistence layer.

  • 스프링은 @Component, @Service, @Controller 등의 stereotype annotations을 추가로 제공한다.
  • @Component는 스프링 관리 구성요소에 대한 일반적인 stereotype이다.
  • @Repository, @Service@Controller는 보다 구체적인 사용 사례(각각 지속성, 서비스 및 프레젠테이션 계층)에 대한 @Component의 전문화(specializations)다.
  • 따라서 @Component로 구성 요소 클래스에 annotations을 달 수 있지만, 대신 @Repository, @Service 또는 @Controller로 annotations을 달면 도구에 의한 처리나 aspects과의 연계에 더 적합한 클래스가 된다.
  • 예를 들어, 이러한 stereotype annotations은 pointcuts의 이상적인 표적을 만든다.
  • @Repository, @Service@Controller는 향후 Spring Framework의 릴리스에서도 추가적인 의미론(semantics)을 수행할 수 있다.
  • 따라서 서비스 계층에 @Component를 사용하는지 @Service를 사용하는지 선택하는 경우 @Service가 더 나은 선택임이 분명하다.
  • 마찬가지로 앞에서 설명한 바와 같이 @Repository는 당신의 지속성 계층(persistence layer)에서 automatic exception translation을 위한 마커로서 이미 지원되고 있다.


This post is licensed under CC BY 4.0 by the author.

[Spring] 1.10. Classpath Scanning and Managed Components

[Spring] 1.10.2. Using Meta-annotations and Composed Annotations