初学SpringBoot,JPA数据查询,项目启动时报错:
Field repo in com.yigo.web1.main.PersonCtrl required a bean of type 'com.yigo.web1.repo.PersonRepo' that could not be found.
摸不着头脑,提示PersonRepo这个类找不到,但是在eclipse中可以正常引用,并没有报错:
包结构如下:
原因是什么?多方查询之后,终于在stackoverflow上找到了答案,原文链接如下:
https://stackoverflow.com/questions/42907553/field-required-a-bean-of-type-that-could-not-be-found-error-spring-restful-ap
是包结构的问题,项目启动时,只有@SpringBootApplication 所在的包被被扫描,在本例中,启动类是Web1Application.java, 也就是com.yigo.web1.main这个包,而PersonRepo这个类在另外一个包中,所以并没有被扫描。
解决办法有二:
1. 修改注解,
@SpringBootApplication(scanBasePackages={
"com.yigo.web1.p1", "com.com.yigo.web1.p2"})
但是这样有个问题,以后包越来越多怎么办?所以采用第二种办法更合适。
2. 调整包结构,把@SpringBootApplication 所在类放在其他包的最外层:
如此,其他包就和启动类在同一个目录下,就能被扫描到了。
重新启动,问题解决! 感谢stackoverflow上高手们的热心分享!