개인 포트폴리오 작업을 하다 예외 처리를 하려고 하는데 @RestControllerAdivce가 작동하지 않아서 한참을 헤맸습니다. 그런데, 알고보니 @SpringBootApplication
애노테이션이 있는 패키지 밖에다 예외 처리 클래스를 만들어 작동하지 않았던 것이었습니다.
이런 실수를 다시 반복하지 않고 기억하기 위해서, 이번 포스팅은 컴포넌트 스캔의 범위에 대해 포스팅하려고 합니다.
@Component(@Service, @Controller,...)
가 달린 클래스들을 스캔해 빈으로 등록시켜 줍니다.@SpringBootApplication
안에 @Component 포함되어 있는 것을 확인할 수 있습니다.그렇다면, 컴포넌트 스캔에 범위는 어떻게 될까요??
@CompoentScan(
basePackages = "basic.server",
)
@Component
가 있는지를 확인합니다.그래서 보통 제일 상위 패키지에 @SpringBootApplication이 붙은 클래스가 있습니다.( 스프링 부트 기본 설정)
com.basic <- 제일 상위 패키지
com.basic.service
com.baseic.repository
따라서, 이 패키지 하위에 @Component가 붙은 클래스를 넣어야 빈으로 등록되어 정상적으로 스프링이 인식하게 됩니다.
혹시, 작동이 안될 때는 패키지 위치를 한 번 확인해 보는 것도 좋을 것 같습니다.!
@Import(BasicConfig.class)
@SpringBootApplication
public class ....{
}
Reference