Field XXX in XXXX required a bean of type XXXX that could not be found.

初学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中可以正常引用,并没有报错:

Field XXX in XXXX required a bean of type XXXX that could not be found._第1张图片

包结构如下: 

Field XXX in XXXX required a bean of type XXXX that could not be found._第2张图片


原因是什么?多方查询之后,终于在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 所在类放在其他包的最外层:

Field XXX in XXXX required a bean of type XXXX that could not be found._第3张图片

如此,其他包就和启动类在同一个目录下,就能被扫描到了。

重新启动,问题解决! 感谢stackoverflow上高手们的热心分享!


你可能感兴趣的:(Field XXX in XXXX required a bean of type XXXX that could not be found.)