问题描述
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2020-01-23 17:44:38.171 ERROR 27300 --- [ restartedMain] o.s.b.d.LoggingFailureAnalysisReporter :
***************************
APPLICATION FAILED TO START
***************************
Description:
Field jobinfodao in club.zstuca.service.impl.JobInfoServiceImpl required a bean of type 'club.zstuca.dao.JobInfoDao' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'club.zstuca.dao.JobInfoDao' in your configuration.
Process finished with exit code 0
其他类似:
No qualifying bean of type 'xxx.xxx.xxx' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
或:
Not a managed type: class xxx.xxx.xxx
问题分析
由于SpringBoot默认扫描SpringBoot 入口类所在的包及其子包中,所以没有扫描到其他包(兄弟包、父包)的JpaRepository 子接口。
解决方案
方案一
把 @SpringBootApplication 注解的 SpringBoot 入口类移到上层 root 包中,使 JpaRepository 子接口位于 root 包及其子包中。
方案二
在 SpringBoot 入口类上添加
(1) @ComponentScan(basePackages = "xxx.xxx.xxx"):扫描 @Controller、@Service 注解;(或者 @Component)
(2) @EnableJpaRepositories(basePackages = "xxx.xxx.xxx"):扫描 @Repository 注解;
(3) @EntityScan(basePackages = "xxx.xxx.xxx"):扫描 @Entity 注解;
参考文章
https://blog.csdn.net/guokexiaohao/article/details/79741023