@Component 대 @Repository 및 @Service in Spring

1. 소개

이 빠른 자습서에서는 Spring Framework에서 @Component, @Repository, @Service 주석 간의 차이점에 대해 알아 봅니다 .

2. 스프링 주석

대부분의 일반적인 애플리케이션에는 데이터 액세스, 프레젠테이션, 서비스, 비즈니스 등과 같은 고유 한 계층이 있습니다.

그리고 각 층에는 다양한 콩이 있습니다. 간단히 말해, 자동으로 감지하기 위해 Spring은 클래스 경로 스캐닝 주석을 사용 합니다.

그런 다음 ApplicationContext에 각 빈을 등록합니다 .

다음은 이러한 주석 중 몇 가지에 대한 간략한 개요입니다.

  • @Component 는 모든 Spring 관리 구성 요소에 대한 일반적인 스테레오 타입입니다.
  • @Service 는 서비스 계층의 클래스에 주석을 추가합니다.
  • @Repository 는 데이터베이스 저장소 역할을하는 지속성 계층의 클래스에 주석을 추가합니다.

이러한 주석에 대한 확장 기사가 이미 있습니다. 그래서 우리는 그들 사이의 차이점에만 초점을 맞출 것입니다.

3. 무엇이 다른가요?

이 고정 관념의 주요 차이점은 다른 분류에 사용된다는 것입니다. 자동 감지를 위해 클래스에 주석을 달 때 각각의 스테레오 타입을 사용해야합니다.

이제 더 자세히 살펴 보겠습니다.

3.1. @구성 요소

애플리케이션 전체에서 @Component를 사용하여 Bean을 Spring의 관리되는 구성 요소로 표시 할 수 있습니다 . Spring은 @Component로 빈을 선택하고 등록 하며 일반적으로 @Service@Repository 를 찾지 않습니다 .

그것들은 @Component 로 주석이 달려 있기 때문에 ApplicationContext 에 등록됩니다 :

@Component public @interface Service { } 
@Component public @interface Repository { } 

@Service@Repository@Component의 특수한 경우입니다 . 기술적으로는 동일하지만 다른 용도로 사용합니다.

3.2. @저장소

@Repository 의 임무는 지속성 특정 예외를 포착하고이를 Spring의 통합 된 확인되지 않은 예외 중 하나로 다시 던지는 것 입니다.

이번 Spring에서는 애플리케이션 컨텍스트에 추가해야하는 PersistenceExceptionTranslationPostProcessor를 제공합니다 .

이 빈 포스트 프로세서는 @Repository로 주석이 달린 빈에 어드바이저를 추가합니다 .

3.3. @서비스

비즈니스 로직을 보유하고 있음을 나타 내기 위해 @Service로 빈을 표시합니다 . 따라서 서비스 계층에서 사용하는 것 외에 다른 전문성은 없습니다.

4. 결론

이 글에서 우리는 @Component, @Repository, @Service 어노테이션 의 차이점에 대해 배웠습니다 . 각 주석을 사용 영역과 함께 개별적으로 조사했습니다.

결론적으로 항상 레이어 규칙에 따라 주석을 선택하는 것이 좋습니다.