启动项目时报Field xxx in xxx required a bean of type 'xxx' that could not be found.这个错的各种情况解决方法!

做项目最烦的就是在写好基础代码后,一去启动项目还不停的报错!
今天就来说一个使用springBoot创建的项目在启动时报的错:

我的报错的问题

Description:

Field testDao in com.thomaschen.dailyspokenglish.service.testService required a bean of type 'com.thomaschen.dailyspokenglish.dao.testDao' 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 'com.thomaschen.dailyspokenglish.dao.testDao' in your configuration.
下面来分析一下这个报错:

这个错误显示是缺少一个dao类型的bean,也就是dao包没有被扫描到而使代码无法正常执行。
关于这个问题的解决,我去百度查找了很多,最后得出下面几种方法:

1、包的位置

一般而言,当项目启动时,只有@SpringBootApplication 所在的包被扫描,所以要把其他包创建在DailyspokenglishApplication.java类的同一层包里,这样就可以扫描到所有你创建的包。
效果如下:
启动项目时报Field xxx in xxx required a bean of type 'xxx' that could not be found.这个错的各种情况解决方法!_第1张图片

2、注解

在springBoot里注解起到了很大的作用,可以省下一大堆的麻烦配置,让开发者是真专注于开发。因此注解就起到了必须的作用,而每一层的注解也不同。
Dao层注解
启动项目时报Field xxx in xxx required a bean of type 'xxx' that could not be found.这个错的各种情况解决方法!_第2张图片
启动项目时报Field xxx in xxx required a bean of type 'xxx' that could not be found.这个错的各种情况解决方法!_第3张图片
注:红框内的就是自动注入的注解。

3、手动配置Mybatis

在启动类上加注释:@MapperScan(“dao所在的包路径” ),表示扫描**.dao包下的所有xxDao。
启动项目时报Field xxx in xxx required a bean of type 'xxx' that could not be found.这个错的各种情况解决方法!_第4张图片
其实这个手动注入实现的是和在第2个方法里在dao层写上@Mapper注解要实现的都是一样的:为了包被扫描到。

再来说说我的错误的解决方法:因为我的包什么注解都弄好,可是还报这个错,没办法只能手动在启动类配置@MapperScan("…")。
最后也没搞定在不手动配置时dao包内有些能被扫描到,有些不可以,所以只能手动配置了。

以上三种方法希望能帮助到你,你还有什么解决方法或有疑问的都欢迎留言,谢谢!

你可能感兴趣的:(项目报错解决法)