@ComponentScan 스캔 범위

지찬우·2023년 1월 9일
0

Knowing

목록 보기
1/10
post-thumbnail

스프링 핵심 원리 강의를 듣고, 다른 프로젝트에서 직접 적용해 보는 중이다. 컴포넌트 스캔에 대해 배우고 적용해 보는 과정에서 스캔이 정상적으로 되지 않는 경험을 했다. 마침 오늘 다음 강의를 들었는데, 이 부분에 관련한 내용이었다. 그래서 그 내용에 대해 글을 써보고자 한다.


초기에 config 패키지 내에 @ComponentScan으로 지정된 구성 클래스인AutoAppConfig를 생성했다.


애플리케이션을 실행시켰는데 아래와 같은 오류가 발생했다.

ItemService 타입의 사용 가능한 빈이 없다.


JUnit으로 테스트를 돌려보았는데 AutoAppConfig 이외에 애플리케이션 빈이 아무것도 등록되지 않았다.


뭔가 @ComponentScan으로 지정된 클래스가 위치하는 패키지를 스캔하는 것 같아 AutoAppConfig 클래스를 최상단 패키지로 옮겨보았다.


다시 테스트를 돌려보니, 역시 내 생각이 맞았다. 나머지 빈들이 잘 등록되는 것을 확인했다.


📝 결론

기본적으로 @ComponentScan으로 지정된 클래스의 패키지가 스캔 범위이다. 따로 아래처럼 basePackages를 사용해 스캔할 패키지 위치를 지정할 수 있다. 하지만 직접 패키지 위치를 지정하는 것보다는 구성 클래스를 최상단 패키지에 위치시키는 것이 권장된다.

profile
좋은 개발자가 되자.

0개의 댓글