Spring | @Component vs @Repository vs @Service

DoItDev·2021년 8월 4일
0
post-thumbnail

Bean 주입 어노테이션

  • @Component : Spring Bean 등록시 Java 클래스 식별
  • @Controller & @RestController : Http 요청을 처리기 메소드에 매핑하고 응답을 처리하는 웹 계층 서비스
  • @Repository : DAO 클래스에 대한 벤더 중립 예외 변환 서비스 (DataAccess 예외)
  • @Service : 비지니스 로직이 들어가는 역할

화면 캡처 2021-08-04 155733

같은 역할을 하지만 나누는 이유는?

상당히 간단하다 계층구조로 관리를 하면 어떤 클래스가 어떠한 일을 하고 어떤 작동을 하는지 명시 할 수 있다.
또한 관점 에 차이도 분명해진다.

그렇다면 어떤 차이가 있는 거지?

@Component

Spring 에서는 응용프로그램 전체에 걸쳐서 @Component 를 사용하여 Bean을 관리를 한다.
@Component 으로 등록을 하면 등록만 할뿐 @Service , @Repository 을 찾지는 않는다.
일반적으로 @Component 의로 등록을 하면 ApplicationContext 에 등록을 한다.

@Service

서비스 어노테이션으로 Bean 을 등록하면 비즈니스 논리를 유지함을 표시한다.
특별한 용도는 없다. (Bean 만등록 ..)

@Repository

@Repository 의 일은 지속성 특정 예외를 잡아서 Spring 의 통일된 견제되지 않는 예외 중 하나로 다시 던지는 것이다.
Spring 에서 어플리케이션 컨텍스트에 추가 해야 하는 지속성 ExceptionTranslationPostProcessor 을 제공한다.
Spring boot 의 경우 포함

계층 규약을 기반으로 주석을 선택하는 것은 항상 좋은 생각이다 !!! 잊지 말자!!

profile
Back-End Engineer

0개의 댓글