问题 - @ComponentScan(basePackageClasses = AdminController.class) <- 为什么它破坏了我的应用程序?
Question - @ComponentScan(basePackageClasses = AdminController.class) <- why has it broken my application?
我遇到了一个我无法理解的问题,它是:
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of method setApplicant in webService.controller.RequestController required a bean of type 'com.service.applicant.Applicant' that could not be found.
Action:
Consider defining a bean of type 'com.service.applicant.Applicant' in your configuration.
我已经做了一些研究,但我仍然无法解决这个问题,当我只是从我的主应用程序 Class 中删除 @ComponentScan 并且它起作用时。
我删除了:
//@ComponentScan(basePackageClasses = AdminController.class)
一切都很好,但我很好奇...有人可以帮助我吗?
你应该先用@Component
注释class Applicant
。
在你的主要class中用@Configuration
、EnableAutoConfiguration
和@ComponentScan({"com.service.applicant","your.admin.controller.path"})
注释对象。
在 class RequestController
中将类型 Applicant
的 属性 注释为 @Autowire
。
当您不显式使用@ComponentScan 时,主class 上的@SpringBootApplication 注释在其中实现了@ComponentScan(以及@EnableAutoConfiguration)。因此,所有标记为@component(或控制器、服务等类似注解)的 classes 都会自动扫描,前提是它们位于定义 main class 的相同或 sub-package 中。
现在,在您的案例中,您在主 class 中添加了 //@ComponentScan(basePackageClasses = AdminController.class)。这是做什么的,它只为 class AdminController 创建了 bean 并忽略了所有其他 classes.
我遇到了一个我无法理解的问题,它是:
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of method setApplicant in webService.controller.RequestController required a bean of type 'com.service.applicant.Applicant' that could not be found.
Action:
Consider defining a bean of type 'com.service.applicant.Applicant' in your configuration.
我已经做了一些研究,但我仍然无法解决这个问题,当我只是从我的主应用程序 Class 中删除 @ComponentScan 并且它起作用时。
我删除了:
//@ComponentScan(basePackageClasses = AdminController.class)
一切都很好,但我很好奇...有人可以帮助我吗?
你应该先用@Component
注释class Applicant
。
在你的主要class中用@Configuration
、EnableAutoConfiguration
和@ComponentScan({"com.service.applicant","your.admin.controller.path"})
注释对象。
在 class RequestController
中将类型 Applicant
的 属性 注释为 @Autowire
。
当您不显式使用@ComponentScan 时,主class 上的@SpringBootApplication 注释在其中实现了@ComponentScan(以及@EnableAutoConfiguration)。因此,所有标记为@component(或控制器、服务等类似注解)的 classes 都会自动扫描,前提是它们位于定义 main class 的相同或 sub-package 中。
现在,在您的案例中,您在主 class 中添加了 //@ComponentScan(basePackageClasses = AdminController.class)。这是做什么的,它只为 class AdminController 创建了 bean 并忽略了所有其他 classes.