[Diary] @SpringBootApplication의 @ComponentScan 범위
본문 바로가기

Development/Diary

[Diary] @SpringBootApplication의 @ComponentScan 범위

문제 상황

JwtUtil 클래스를 Bean에 등록했음에도, autowire을 할 수 없다는 경고가 자꾸 나온다.

빨간 줄: Could not autowire. No beans of 'JwtUtil' type found.

문제 원인: Component Scanning 범위

원인이 무엇인지 갈피를 못 잡아서 GPT한테 물어보니, "Component Scanning이 이루어지는 패키지 안에 있음?"이라고 한다.

경로를 다시 보니 개발이 이루어지는 domain과 global 디렉토리가 @SpringBootApplication 이 있는 패키지 밖에 있었다.

문제 해결

해결은 위 두 디렉토리를 패키지 안으로 넣어서 해결했긴 한데, 이 @SpringBootApplication의 Component Scan 범위에 대해 알게 되었다.

기본적으로 Component Scan이 이루어지는 범위는 @SpringBootApplication이 적용된 클래스가 속한 패키지 내부이며,

이를 바꾸기 위해서는 @ComponentScan(basePackages = {"com.example.service", "com.example.repository"})와 같이 설정하면 된다. excludeFilters 속성을 사용하면 제외하는 것도 가능하다.

참조