스프링이 Bean 객체를 자동으로 주입해주기 위해선 먼저 스프링이 특정 클래스를 Bean객체가 되는 대상으로 인식해야 한다. 이때 사용되는 것이 바로 ComponentScan의 역할.
먼저 xml 명세를 기반으로 보면 servlet-context.xml 파일에
<context:component-scan base-package="com.programo90.app">
위와 같이 컴포넌트를 스캔할 기준점이 되는 package를 지정하고 있다. 해당 패키지(위 예에선 "com.programo90.app" ) 이하에서 @Component나 @Controller, @Service, @Repository 등의 어노테이션으로 컴포넌트 대상이다 표시가 된 모든 클래스들을 찾고 해당 클래스로 Bean객체를 생성해서 팩토리에서 관리하게 된다.
java 파일로 스프링을 설정 할때는
@Configuration, @ComponentScan 두 가지 어노테이션을 선언하면 해당 Class가 스프링 설정파일이고 ComponentScan 설정을 담당한다고 인식하게 된다.
@Configuration
@ComponentScan(basePackages="com.programo90.app")
public class ApplicationConfig {
}
@ComponentScan(basePackage = "com.programo90.app") 과 같이 파라미터로 특정 패키지를 지정할 수 있고,
@ComponentScan(basePackageClasses = Application.class) 와 같이 특정 클래스 이하부터로 범위를 지정할 수도 있다.
'스프링' 카테고리의 다른 글
Spring Encoding 설정 (0) | 2021.01.07 |
---|---|
IoC(Inversion of Control) 제어의역전 과 IoC Container (0) | 2020.11.27 |
DI(Dependency Injection) 의존성 주입 (0) | 2020.11.26 |