做项目最烦的就是在写好基础代码后,一去启动项目还不停的报错!
今天就来说一个使用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类的同一层包里,这样就可以扫描到所有你创建的包。
效果如下:
2、注解
在springBoot里注解起到了很大的作用,可以省下一大堆的麻烦配置,让开发者是真专注于开发。因此注解就起到了必须的作用,而每一层的注解也不同。
注:红框内的就是自动注入的注解。
3、手动配置Mybatis
在启动类上加注释:@MapperScan(“dao所在的包路径” ),表示扫描**.dao包下的所有xxDao。
其实这个手动注入实现的是和在第2个方法里在dao层写上@Mapper注解要实现的都是一样的:为了包被扫描到。
再来说说我的错误的解决方法:因为我的包什么注解都弄好,可是还报这个错,没办法只能手动在启动类配置@MapperScan("…")。
最后也没搞定在不手动配置时dao包内有些能被扫描到,有些不可以,所以只能手动配置了。
以上三种方法希望能帮助到你,你还有什么解决方法或有疑问的都欢迎留言,谢谢!