서비스는 사용 사례를 구현하는 책임이 있는 객체이며, 리포지터리는 데이터 지속성을 관리하는 객체다. 이런 책임들은 프로젝트에서 매우 일반적이며 클래스 설계에서 중요하므로 이들을 표시하는 고유한 방법이 있다면 개발자가 앱 디자인을 더 잘 이해하는 데 도움이 된다.
스프링은 서비스 책임을 담당하는 컴포넌트를 표시하는 @Service 애너테이션과 리포지터리 책임을 구현하는 컴포넌트를 표시하는 @Repository 애너테이션을 제공한다(그림 4-12). 세 가지(@Component, @Service, @Repository) 모두 스테레오타입 애너테이션이며 스프링이 애너테이션된 클래스의 인스턴스를 생성하고 스프링 컨텍스트에 추가하도록 지시한다.