赞
踩
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘bookController’ defined in file [D:\eclipse-workspace\demo\target\classes\com\jsglxx\demo\controller\BookController.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type ‘com.jsglxx.service.BookService’ available: expected at least 1 bean which qualifies as autowire candidate.Dependency annotations: {}
Parameter 0 of constructor in com.jsglxx.demo.controller.BookController required a bean of type ‘com.jsglxx.service.BookService’ that could not be found.
Consider defining a bean of type ‘com.jsglxx.service.BookService’ in your configuration.
这个错误信息表明Spring框架在尝试创建名为 bookController 的 bean时遇到了问题。具体问题是无法通过构造函数参数0注入 BookService 类型的bean,因为没有找到符合条件的bean来注入。
确保有一个实现了 BookService 接口的类,并且这个类被Spring管理。通常,这是通过在实现类上添加 @Service 注解来实现的。
确保Spring的组件扫描能够扫描到 BookService 的实现类。如果使用的是 @SpringBootApplication 或 @ComponentScan 注解,请检查它们的扫描路径是否包含了 BookService 实现类的包。
如果 BookService 有多个实现,确保使用了 @Primary 注解来指示首选的bean,或者使用 @Qualifier 注解来指定具体使用哪一个bean。
检查 BookService 是否在启动类 DemoApplication 的同级或下级目录中,如果不是,则会报该异常。
经检查发现是 BookService 没有在启动类的同级或下级目录
在Spring Boot应用中,@SpringBootApplication 注解是一个组合注解,它包含了 @ComponentScan 注解,后者用于指定Spring在初始化时应该扫描哪些包来查找带有 @Component、@Service、@Repository 等注解的类,并将这些类注册为Spring容器中的bean。
如果 BookService 的实现类不在启动类的同一级或下级目录中,那么默认情况下,Spring Boot可能无法扫描到这个类,因为它 默认只扫描启动类所在包及其子包中的组件。
为了解决这个问题,你可以在 @SpringBootApplication 注解中显式指定 scanBasePackages 属性,来告诉Spring Boot需要扫描哪些包。例如:
@SpringBootApplication(scanBasePackages = {"com.jsglxx.service", "其他需要扫描的包"})
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
这样,Spring Boot就会在启动时扫描 com.jsglxx.service 包以及你指定的其他包,从而能够找到 BookService 的实现类并将其注册为bean。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。