해당 내용은 김영한 스프링 핵심원리 기본 강의를 들으며 강의 자료를 참고하여 정리한 내용입니다.
지금까지 스프링에서 빈을 등록하기 위해서는 @Bean을 사용하거나 XML 구성을 이용했다. 하지만 수십, 수백 개의 빈을 일일이 등록하는 것은 번거롭고 오류가 발생하기 쉽다. 스프링은 이러한 문제를 해결하기 위해 @ComponentScan이라는 기능을 제공한다. 이는 자동으로 빈을 등록하고, @Autowired를 통해 의존관계도 자동으로 주입한다.
@ComponentScan은 @Component가 붙은 모든 클래스를 찾아서 스프링 빈으로 등록한다.@Configuration도 내부적으로 @Component를 포함하고 있다.AppConfig에서는 @Bean으로 등록과 의존관계를 직접 명시했지만, 이제는 설정 정보가 없기에 클래스 내부에서 자동으로 처리한다.@Autowired를 지정하면, 스프링 컨테이너가 자동으로 해당 스프링 빈을 찾아서 주입한다.@ComponentScan으로 탐색할 패키지와 시작 위치를 지정할 수 있다.basePackages: 탐색할 패키지의 시작 위치를 지정한다. 지정된 패키지와 그 하위 패키지를 모두 탐색한다.basePackageClasses: 지정한 클래스의 패키지를 탐색 시작 위치로 사용한다.@SpringBootApplication을 사용하며, 이 안에 @ComponentScan이 포함되어 있다.@Component, @Service, @Controller, @Repository, @Configuration 등이 스프링 빈으로 등록될 수 있는 대표적인 어노테이션들이다.@Component를 내장하고 있다.@ComponentScan에는 필터 옵션이 있다. 이를 통해 스캔 대상을 세밀하게 조절할 수 있다.ANNOTATION, ASSIGNABLE_TYPE, ASPECTJ, REGEX, CUSTOM 등이 있다.ConflictingBeanDefinitionException 오류가 발생한다.동 빈이 우선권을 가지고 자동 빈을 오버라이딩한다.