2023. 7. 17. 21:12ㆍSpring/[inflearn]스프링 핵심 원리 - 기본편
◎ 탐색할 패키지 위치 지정
-> 모든 자바 클래스를 컴포넌트 스캔을 하면 시간이 오래 걸린다.
-> 컴포넌트 스캔이 필요한 위치부터 탐색하도록 지정할 수 있다.
@ComponentScan(
basePackages ="practice.core.member", //member만 컴포넌트 스캔의 대상이 된다.
basePackageClasses = AutoAppConfig.class,
excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class)
// @Configuration이 붙은 클래스는 컴포넌트 스캔에서 제외
)
- basePackages : 탐색할 패키지의 시작 위치를 지정한다. 위 코드에서는 member패키지를 시작위치로 지정했다.
- basePackageClasses : 지정한 클래스의 패키지를 탐색 시작 위치로 지정한다. 위 코드에서는 AutoAppConfig 클래스가 위치하는 패키지부터 탐색을 시작한다.
- 만약 시작위치를 지정하지 않으면 @ComponentScan이 붙은 설정 정보 클래스의 패키지가 시작위치가 된다.
- 스프링 부트의 대표 시작 정보 @SpringBootApplication 내부에는 @ComponentScan이 있어 보통 @SpringBootApplication을 프로젝트 시작 루트 위치에 위치시킨다.
◎ 컴포넌트 스캔 대상
-> 컴포넌트 스캔은 @Component 뿐 아니라 @Controller, @Service, @Repository, @Configuration도 대상에 포함한다.
-> @Component : 컴포넌트 스캔에서 사용
-> @Controller : 스프링 MVC 컨트롤러에서 사용
-> @Service : 스프링 비즈니스 로직에 사용
-> @Repository : 스프링 데이터 접근 계층에서 사용
-> @Configuration : 스프링 설정정보에서 사용
-> 해당 클래스에 소스 코드를 보면 모두 @Component가 포함되어 있다.
-> 애너테이션에는 상속관계가 없기 때문에 사실 애너테이션이 특정 애너테이션을 포함하고 있는 것을 인식하는 것은 자바가 지원하는 것이 아니라 스프링이 지원하는 기능이다.
☆ 참고
'Spring > [inflearn]스프링 핵심 원리 - 기본편' 카테고리의 다른 글
컴포넌트 스캔 - 중복 등록과 충돌 (0) | 2023.07.17 |
---|---|
컴포넌트 스캔 - 필터 (0) | 2023.07.17 |
컴포넌트 스캔 - 컴포넌트 스캔 & 의존관계 자동 주입 (0) | 2023.07.17 |
@Configuration & 싱글톤 (0) | 2023.07.14 |
싱글톤 컨테이너 (0) | 2023.07.14 |