@ComponentScan
설정에 포함되지 않은 패키지에 속한 스프링 빈들은 스프링 애플리케이션 컨텍스트에서 접근할 수 없습니다.
그러므로, 이 룰에 의해 감지되는 경우 설정에 실수가 있을 수 있습니다.
참고: @ComponentScan
어노테이션은 @SpringBootApplication
어노테이션에 포함되어있으며, 이 경우 스프링 부트는 스프링 부트 메인 클래스를 포함한 하위 패키지들을 자동으로 스캔합니다.
규칙을 어긴 코드
package com.mycompany.app;
@Configuration
@ComponentScan("com.mycompany.app.beans")
public class Application {
...
}
package com.mycompany.app.web;
@Controller
public class MyController { // 규칙을 어긴 코드; ComponentScan 이 "com.mycompany.app.beans" 패키지에서 빈을 스캔하지만, MyController 는 "com.mycompany.app.web" 에 포함되어있습니다.
...
}
규칙을 준수한 해결책
package com.mycompany.app;
@Configuration
@ComponentScan({"com.mycompany.app.beans","com.mycompany.app.web"})
or
@ComponentScan("com.mycompany.app")
or
@ComponentScan
public class Application {
...
}
package com.mycompany.app.web;
@Controller
public class MyController { // "com.mycompany.app.web" 이 @ComponentScan 어노테이션 된 클래스에 의해 참조됩니다.
...
}
If you like SONARKUBE, don’t forget to give me a star.