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로 설정하면, 스프링이 기본적으로 등록하는 빈을 포함하지 않게 된다.
'SpringBoot' 카테고리의 다른 글
SpringBoot - @RequestMapping 활용 (0) | 2023.04.28 |
---|---|
SpringBoot - @Controller, @RestController 비교 (0) | 2023.04.28 |
Spirngboot - @Repository 기능 (0) | 2023.04.28 |
SpringBoot - 주요 어노테이션 (0) | 2023.04.28 |
SpringBoot 용어 및 기분 구조 (0) | 2023.04.28 |