육감적 코딩

@Component와 컴포넌트 스캔 본문

정리/Spring

@Component와 컴포넌트 스캔

감감감감감감 2020. 8. 3. 20:22

@ComponentScan

- @Repository
- @Service
- @Controller
- @Configuration

 

@ComponentScan의 핵심설정은 크게 두 가지로 볼 수 있습니다.

  • 스캔범위지정

  • 스캔의 범위내에서 걸러낼 조건

먼저 스캔 범위 지정에 대해 알아보겠습니다.

 

 

1. 스캔범위지정.

먼저 basePackage() 입니다.

해당 설정은 문자열을 반환합니다. 하지만 문자열은 타입세이프 하지 않기때문에 타입세이프한 방법으로 설정할 수 있는 basePackageClasses() 라는 속성이 있습니다. 

해당 설정에 값을 주면 값에 전달된 클래스 기준으로 컴포넌트 스캔을 시작합니다.

현재 애플리케이션 시작위치 즉 me.jsh.demospringioc.demospringioc.book 패키지부터

이하의 모든 패키지를 스캔합니다.

  • 해당 패키지 밖에있는것은 스캔되지않습니다. (out.MyService)

스캔의 범위를 지정하는 중요한 역할을 합니다.

 

 

 

2. 스캔의 범위내에서 걸러낼 조건

그리고 또 다른 중요한 설정 중 하나는

Filter 입니다. Filter는 스캔되는 중에 어떤것을 걸러낼것인가를 설정합니다.

@SpringBootApplication 에는 기본적으로 excludeFilter 가 있습니다.

여기에 포함되어있는 두개의 필터를 기준으로 걸러내는 동작을합니다.

스캔 시 무엇을 제외할 것인지를 지정하는 중요한 역할을 합니다.
Comments