티스토리 뷰
Spring Container를 이용하기 위해선 Bean객체와 의존성을 관리하기 위한 구성정보가 필요합니다. 이러한 구성정보를 제공하기 위해 @Container를 이용해 구성정보 클래스를 정의하죠. 객체생성과 주입에 대한 역할을 분리 할 수 있으니 너무나 좋은 방법입니다. 하지만 관리해야 하는 객체가 많아진다면 이 또한 문제가 될 수 있습니다.
Spring은 @ComponentScan 이라는 어노테이션을 제공합니다. ComponentScan은 구성정보 없이도 자동으로 빈들을 등록하고 관리하는 기능입니다. ComponentScan은 @Component 어노테이션이 붙어있는 객체들을 빈으로 등록합니다. @Service, @Repository, @Controller는 모두 이미 @Component 어노테이션이 붙어 있어 따로 @Component을 붙일 필요는 없습니다.
@ComponetScan엔 몇가지 옵션들이 제공됩니다.
- excludeFilters : scan 대상에서 제외할 component
- includeFilters : scan 대상에 포함시킬 component
- basePackages : scan 범위 설정. 지정된 패키지와 그 하위 패키지를 모두 scan한다. (default : 본인의 패키지)
- ...
하지만 신기하게도 SpringBoot를 사용하면 @ComponentScan 구성정보 없이도 Component들이 알아서 빈객체로 등록이 되고 관리됩니다. 어떻게 된걸까요? 그 비밀은 @SpringBootApplication에 있습니다.

@SpringBootApplication에 @ComponentScan이 있는 것을 볼 수 있습니다.
ref.
https://dahye-jeong.gitbook.io/spring/spring/2021-05-05-component-scan
'spring' 카테고리의 다른 글
Spring IoC Container (0) | 2021.09.30 |
---|---|
SOLID와 Spring - 2 (0) | 2021.09.25 |
SOLID와 Spring - 1 (0) | 2021.09.24 |