스프링 빈들은 "@ComponentScan" 에 의해 고려되어야합니다.

 

@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. :star2:

원문으로 바로가기

Star This Project