본문 바로가기

SpringBoot

SpringBoot - @ComponentScan 이해

반응형

1. 기능

스프링 프레임워크에서 컴포넌트 스캔(Component Scan)을 수행할 때 사용하는 어노테이션이다. 컴포넌트 스캔(Component Scan)은 스프링이 빈으로 등록할 클래스를 찾아서 자동으로 빈으로 등록해주는 기능이다. 보통 @Controller, @RestController, @Service, @Repository, @Configuration, @Component, @Bean와 같은 어노테이션이 붙은 클래스를 찾아서 빈으로 등록한다.

@ComponentScan 어노테이션을 사용하면 어느 패키지부터 컴포넌트 스캔을 수행할 것인지 설정할 수 있다.

2. 코드로 보는 예시

@Configuration
@ComponentScan("com.example.demo")
public class AppConfig {
    // 빈(bean) 설정
}

위 코드에서 @ComponentScan 어노테이션은 com.example.demo 패키지부터 컴포넌트 스캔을 시작하라는 것을 의미한다. 따라서, com.example.demo 패키지에 속한 @Controller, @Service, @Repository, @Component 어노테이션이 붙은 클래스는 자동으로 빈으로 등록된다.

또한, @ComponentScan 어노테이션에는 다양한 옵션을 설정할 수 있다. 예를 들어, basePackages, excludeFilters, includeFilters, useDefaultFilters 등의 속성을 설정할 수 있다.

@ComponentScan(basePackages = "com.example.demo",
    excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = SampleClass.class),
    includeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = CustomAnnotation.class),
    useDefaultFilters = false)

위 코드에서는 basePackages 속성으로 컴포넌트 스캔을 시작할 패키지를 지정하고, excludeFilters와 includeFilters 속성으로 컴포넌트 스캔에서 제외하거나 포함할 클래스를 설정한다. useDefaultFilters 속성을 false로 설정하면, 스프링이 기본적으로 등록하는 빈을 포함하지 않게 된다.

반응형