이 글에서는 @Component
, @Repository
, @Service
의 차이에 대해 알아보겠다.
그런데 사실 이 셋의 차이에 대해서 Baeldung - Spring Bean Annotations에 대해서 다 이미 언급을 했다. 그래서 저 글만 참고해도 좋다.
애플리케이션에는 보통 여러 영역이 있다. 서비스 영역, 전시 영역, 데이터 접근 영역 등등
영역별로 활용하는 bean들이 여러개가 있을 것이고, 해당 bean들은 다른 영역에서는 보통 사용하질 않을 것이다.
이를 표기하는데 사용되는 것이 위 3개의 annotation이다. 그리고 이 annotation들을 기반으로 bean을 찾아서 ApplicationContext
에다가 bean들을 저장하는 것을 classpath scanning이라고 한다.
classpath scanning이라는 단어가 낯설 수 있는데 사실 @ComponentScan
을 기반으로 특정 패키지에서 bean을 탐색하는 과정 자체를 일컫는 말이다. 이에 관해서는 다음 글들에서 다뤘으니 참고 : 1, 2, 3
@Component
@Repository
@Service