[Spring] ComponentScan 대상에 대한 나름의 이해
2023. 10. 3. 19:48ㆍSpring
ComponentScan의 기본 스캔 대상에 대한 인자로 basePackages, basePackageClasses가 있는데
basePackages는 직접 스캔을 시작하는 패키지를 지정해주는 것이다.
basePackageClasses는 Class 바로 위에 있는 Package로부터 시작된다.
저것들을 안넣어준 디폴트는 그 class의 바로 위에 있는 package가 스캔의 대상이 된다.
그런데 SpringBoot를 이용하면 @SpringBootApplication 안에 @ComponentScan이 포함되어 프로젝트 최상위 패키지부터 스캔을 알아서 해준다. 즉 ComponentScan을 따로 할 필요가 없는 것이다.
@Controller, @Repository, @Service, @Configuration 등도 @Component로 인식하고 스캔의 대상이 된다.
정확한 이유는 저 안에 @Component가 있다. 이건 어노테이션 상속이 아니라 스프링이 해주는 기능이다. 스프링이 알아서 어노테이션 안으로 들어가서 @Component를 읽는다. 그리고 각각 @Component에 더해 부가기능들이 존재한다.
다만 @Service는 딱히 그런 기능은 없고 핵심비즈니스로직에 들어가는 Class임을 나타내기 위해 사용한다. 비즈니스 계층을 인식하는데 도움을 준다.
Reference
'Spring' 카테고리의 다른 글
[Spring] Bean 중복 등록에 대한 나름의 이해 (0) | 2023.10.05 |
---|---|
[Spring] ComponentScan Filter에 대한 나름의 이해 (0) | 2023.10.04 |
[Spring] ComponentScan에 대한 나름의 이해 (0) | 2023.10.02 |
[Spring] @Configuration에 대한 나름의 이해 (0) | 2023.10.01 |
[Spring] 스프링 싱글톤 컨테이너 Configuration에서 주의점과 나름의 이해 (0) | 2023.09.30 |