상당히 간단하다 계층구조로 관리를 하면 어떤 클래스가 어떠한 일을 하고 어떤 작동을 하는지 명시 할 수 있다.
또한관점
에 차이도 분명해진다.
Spring 에서는 응용프로그램 전체에 걸쳐서 @Component 를 사용하여 Bean을 관리를 한다.
@Component 으로 등록을 하면 등록만 할뿐 @Service , @Repository 을 찾지는 않는다.
일반적으로 @Component 의로 등록을 하면 ApplicationContext 에 등록을 한다.
서비스 어노테이션으로 Bean 을 등록하면 비즈니스 논리를 유지함을 표시한다.
특별한 용도는 없다. (Bean 만등록 ..)
@Repository 의 일은 지속성 특정 예외를 잡아서 Spring 의 통일된 견제되지 않는 예외 중 하나로 다시 던지는 것이다.
Spring 에서 어플리케이션 컨텍스트에 추가 해야 하는 지속성 ExceptionTranslationPostProcessor 을 제공한다.
Spring boot 의 경우 포함
계층 규약을 기반으로 주석을 선택하는 것은 항상 좋은 생각이다 !!! 잊지 말자!!