이 글은 백기선 님의 스프링 프레임워크의 핵심 기술 강의를 듣고 복습 차원에서 적은 글입니다.
컴포넌트 스캔 주요 기능
- 스캔 위치 설정
- 필터 : 어떤 어노테이션을 스캔할지 또는 하지 않을지 설정이 가능하다.
// XML 방식
<context:component-scan>
// Java 방식
@SpringBootApplication
public class Spring01Application {
public static void main(String[] args) {
SpringApplication.run(Spring01Application.class, args);
}
}
// @SpringBootApplication
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
...
}
컴포넌트 스캔은 자동으로 빈을 등록해준다. Java 방식 기준으로는 @SpringBootApplication 파일 이하에 모든 빈을 등록하고 @Filter를 통해서 원하지 않는 어노테이션을 제외할 수 있다.
@Component
- @Repository
- @Service
- @Controller
- @Configuration
컴포넌트 스캔은 @Component 어노테이션을 사용한 클래스들을 모두 빈으로 등록한다.
실제로 @Repository, @Service, @Controller, @Configuration 등의 어노테이션을 접근하면 모두 상단에 @Component 어노테이션이 존재한다.
// @Controller
@Component
public @interface Controller {
@AliasFor(
annotation = Component.class
)
String value() default "";
}
실제 성능상으로 Function을 사용하여 빈을 등록하는 방법이 존재한다. 그러나 일일이 등록을 해야 하는 방식이므로 소스 관리 차원으로 봤을 때는 추천하지 않는다.
'BackEnd > Spring' 카테고리의 다른 글
[Spring] 스프링(Spring) 핵심 기술 이야기 4부 - 빈의 스코프 (0) | 2020.10.11 |
---|---|
[Spring] 스프링(Spring) 핵심 기술 이야기 2부 - @Autowire (0) | 2020.09.16 |
[Spring] 스프링(Spring) 핵심 기술 이야기 1부 - IoC (0) | 2020.09.10 |
댓글