https://mjlee4330.144
위의 Spring Bean을 등록하기 위해서는 @Bean 어노테이션을 적용한 방법을 사용하거나 XML을 이용하여 설정 정보를 직접 작성한다.
현장에서 사용되는 콩은 무수히 많을 텐데, 일일이 생성하여 등록하는 것은 번거로운 작업입니다.
이를 해결하는 방법은 @ComponentScan입니다.
Spring Bean은 @ComponentScan을 사용하여 구성 정보 없이 자동으로 등록할 수 있습니다.
- 구성 정보 클래스에 @ComponentScan 주석을 적용합니다.
코드를 작성할 필요가 없습니다.
왜? 빈을 자동으로 등록하기 때문에 - 빈으로 등록할 클래스에 @Component 어노테이션을 적용한다.
- 생성자에 @Autowired 어노테이션을 적용하면 종속성이 자동으로 주입됩니다.
위와 같이 설정하면 @Component 어노테이션이 붙은 클래스를 스캔하여 Spring Bean으로 등록한다.
(이 때 빈 이름은 클래스 이름의 첫 글자만 소문자로 변경하여 사용한다.
)
탐색 위치 및 기본 스캔 대상
모든 Java 클래스를 검색하여 @Component를 찾으려면 시간이 오래 걸립니다.
따라서 필요한 시간을 줄이기 위해 검색 위치를 지정하십시오.
- basePackages: 지정된 패키지를 검사 시작 위치로 지정합니다.
- basePackageClasses: 지정된 클래스의 패키지를 스캔 시작 위치로 지정합니다.
- 기본 : 아무 것도 지정하지 않으면 @ComponentScan 주석이 달린 클래스 파일 패키지가 적용됩니다.
시작 위치로 설정합니다.
@ComponentScan(
//AppConfig 클래스를 제외하기 위해서 작성
excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class),
//컴포넌트 스캔을 시작할 패키지의 위치를 설정할 수 있다.
basePackages= "hello.core",
//지정한 클래스의 패키지를 스캔 시작의 위치로 설정할 수도 있다.
basePackageClasses = AutoAppConfig.class
//만약 지정하지 않는다면 @ComponentScan이 붙은 설정파일의 패키지를 기본 위치로 설정한다.
)
@Component 뿐만 아니라 다음 주석도 스캔 및 탐색됩니다.
- @Controlller : Spring MVC 컨트롤러에서 사용되며 MVC 컨트롤러로 인식된다.
- @Service: 스프링 비즈니스 로직에서 사용
- @Repository : Spring 데이터 액세스 레이어에서 사용되며 데이터 레이어의 예외를 Spring 예외로 변환합니다.
- @Configuration : Spring 설정 정보에 사용되며 Spring Bean의 싱글톤을 보장한다.
위 글은 인프론 강사 김영한 강사님의 유료강의를 들으면서 요약 및 정리를 목적으로 작성되었습니다.
참조: inflearn / 김영한 / Spring 핵심 원리의 기초