package hello.core;
@Configuration
@ComponentScan(
basePackages = "hello.core.member",
basePackageClasses = AutoAppConfig.class,
excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = Configuration.class)
)
public class AutoAppConfig {
}
basePackages
: 해당 패키지 하위의 클래스들만 읽어와 빈을 등록한다.
basePackageClasses
: 해당 클래스가 있는 위치부터 패키지를 읽는다.
@ComponentScan
이 붙은 설정 정보 클래스의 패키지가 시작 위치가 된다.
패키지의 위치를 지정하지 않고, 설정 정보 클래스를 프로젝트 최상단에 둔다.
참고로 스프링 부트를 사용하면 @SpringBootApplication
을 프로젝트의 최상단에 둔다. @SpringBootApplication
내부에는 @ComponentScan
이 포함되어 있기 때문이다.
해당 애노테이션에 대한 기능을 제공하는 주체는 자바 언어가 아닌 스프링이 지원한다.