[Spring] @Component, 컴포넌트 스캔이란?

컴포넌트 스캔(Component Scan)

컴포넌트 스캔이란 스프링이 스프링 빈(Bean)으로 등록될 준비가 된 클래스들을 스캔하여 빈(Bean)으로 등록해주는 과정을 말한다. 

 

@Component 어노테이션이 붙어있는 클래스들은 전부 컴포넌트 스캔의 대상이 된다. 

 

@Configuration, @Service, @Repository, @Controller,  등의 어노테이션에도 전부 @Component이 포함되어 있어 자동으로 컴포넌트 스캔의 대상이 된다. 

 

 

@ComponentScan과 컴포넌트 스캔 범위

컴포넌트 스캔을 사용하기 위해서는 설정 정보 클래스에 @ComponentScan 어노테이션을 붙여줘야 한다. 이때 컴포넌트 스캔의 범위는 설정 정보 클래스의 패키지를 포함한 모든 하위 패키지가 된다. 이때 모든 자바 클래스를 다 컴포넌트 스캔하면 시간이 오래 걸릴 수 있다. 따라서 아래와 같이 꼭 필요한 위치부터 탐색을 시작하도록 할 수 있다.

 

@ComponentScan( 
	basePackages = "hello.core"
)

참고로, 스프링 부트를 사용하면 스프링 부트의 대표 시작 정보인 @SpringBootApplication를 프로젝트 시작 루트 위치에 두는 것이 관례이다. @SpringBootApplication 어노테이션에 @ComponentScan이 들어있기 때문에 하위 패키지 모두 컴포넌트 스캔의 대상이 된다.

 

 

반응형

댓글

Designed by JB FACTORY