티스토리 뷰
@ComponantScan은 @Componant가 붙은 모든 클래스를 스프링 빈으로 등록한다.
아래처럼 @ComponantScan을 붙이면,
로그를 통해 빈으로 등록되는 것을 확인할 수 있다.
이렇게 따로 클래스를 만들어 모아두지 않고 컴포넌트 스캔을 이용해 자동으로 하는 건 알겠는데,
그럼 의존관계 주입은 어떻게?
@AutoWired 사용!
생성자에 @AutoWired를 지정하면 스프링 컨테이너가 자동으로 해당 되는 빈을 찾아서 주입한다.
이때 기본적으로 조회하는 방식은 타입이 같은 빈을 찾는 것이다.
(위 이미지에서는 memberRepository와 같은 타입을 찾겠지!)
(타입이 중복되거나 하는 경우의 처리는 @AutoWired 게시글에서!)
그럼 탐색 위치는 어떻게?
basePackages 옵션으로 탐색할 패키지의 시작 위치를 지정할 수 있다.
해당되는 패키지를 포함해서 하위 패키지를 모두 탐색한다.
그럼 basePackages가 없으면?
@ComponantScan이 붙은 설정정보 클래스의 패키지가 시작 위치!
다만 권장하는 방법은
프로젝트 시작 루트에 AppConfig같은 설정 정보를 두고, @ComponantScan을 붙인 다음 basePackages는 생략하는 것이라고 한다.
참고로 스프링 부트를 이용한다면 대표 시작정보인 @SpringBootApplication을 시작 루트 위치에 두는 것이 관례이다.
(@SpringBootApplication을 열어보면 @ComponantScan이 들어있다. 즉, 스프링부트를 쓰면 굳이 @ComponantScan을 쓸 필요가 없다)
'spring' 카테고리의 다른 글
- Total
- Today
- Yesterday
- Redis
- Java
- pessimisticlock
- jmeter부하테스트
- jmeter시나리오
- 자바
- CorrectnessAndTheLoopInvariant
- jmeter세션
- jmeter테스트
- hackerrank
- 스프링faker
- index
- bankersRounding
- jmeter토큰
- jmeter쿠키
- Python
- Lock
- jmeter로그인
- 대규모더미데이터
- 프로그래머스
- 부하테스트시나리오
- 항해
- 토큰
- jwt
- 동적크롤링
- Spring
- 인덱스
- Redisson
- EC2
- CheckedException
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |