Error creating bean with name 'com.example.SpringBootJdbcDemoApplication.SpringBootJdbcDemoApplicat

在Spring Boot测试的时候,报类似错误:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'com.example.SpringBootJdbcDemoApplication.SpringBootJdbcDemoApplication': Unsatisfied dependency expressed through field 'userRepository': No qualifying bean of type [com.example.repositories.UserRepository] found for dependency [com.example.repositories.UserRepository]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.example.repositories.UserRepository] found for dependency [com.example.repositories.UserRepository]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}  
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:569)  
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)

报错的根本原因是:

无法注入bean

在idea的提示栏可以发现@Autowired注解旁边有:could not wired.no beans of ‘’type found

 

 

后来经研究发现,SpringBoot项目的Bean装配默认规则是根据Application类所在的包位置从上往下扫描! 
“Application类”是指SpringBoot项目入口类。这个类的位置很关键:

修改后如下。

Error creating bean with name 'com.example.SpringBootJdbcDemoApplication.SpringBootJdbcDemoApplicat

自动生成的目录结构没有任何问题

主程序入口为DemoApplication,测试类为DemoApplicationTests,这两个类在同名包下面

SpringBoot项目的Bean装配默认规则是根据Application类所在的包位置从上往下扫描!

说第二遍了,白话就是,只能扫描到主程序入口同级包或者是子包。其余的无法扫描到!只要将需要注入的bean放在com.example.demo或者是它的子包中,就可以扫描到了。