@Controller

스프링 MVC 컨트롤러로 인식한다.

@Repository

스프링 데이터 접근 계층으로 인식하고, 해당 계층에서 발생하는 예외는 모두 DataAccessException 으로 변환한다.

@Configuration

스프링 설정 정보로 인식하고 스프링 빈이 싱글톤을 유지하도록 추가 처리를 한다. (싱글톤이 아닌 호출할 때마다 인스턴스를 생성하도록 설정할 수도 있다.)

3. Annotation-based Configuraion

@Service

특별한 처리는 없으나, 개발자들이 핵심 비즈니스 계층을 인식하는데 도움을 준다.

⇒ 단순하게 @Component 를 남발하는 것이 아닌 상황에 따라 적절한 어노테이션을 붙여주자.

https://steady-coding.tistory.com/460