springboot项目Mapper注入失败:@org.springframework.beans.factory.annotation.Autowired(required=true)

发布时间 2023-12-27 10:52:37作者: 那、就这样吧

同事发给我一个项目,说启动时,报mapper无法注入,让我帮忙排查一下问题

记录一下我自己遇到这个问题的排查顺序

首先先排除以下问题:

  1.mapper类是否加入到ioc容器中(有没有使用@Mapper标签),如果报错是service层,那就看看是不是没有添加server标签

  2.检查项目是否扫描mapper类所在包的注解标签(检查mapper类是否在启动类所在包的子包下面)

  3.检查引入的mapper标签是否正确,import org.apache.ibatis.annotations.Mapper

  4.检查mapper.xml文件中的namespace与mapper接口文件的路径是否能对上

如果以上都能对上,就有可能是以下原因造成的

  1.检查pom文件中是否引入mybatis依赖,Mapper标签是由mybatis提供的

  2.检查pom文件中是否引入所需数据库的依赖

 

总结:

  对于springboot项目来说,只要你的类是创建在启动类所在包的子包下,那么无论你在类中添加什么注解,它是都能够扫描到的(springboot的约定俗成),如果添加注解后还报这个错,我能想到的有以下两种原因:

  一:是类没有在启动类所在包的子包下,这样springboot是没办法自动扫描到的,需要在启动类上添加MapperScan注解或者ComponentScan注解,然后指定路径,让ioc容器去扫描这个路径下的标签。

  二:如果路径正确、注解正确,还是报这个错,那么就有可能是其他位置出错,需要检查pom文件、properties或者yml配置文件,比如我同事这个代码就是pom文件中没有引入相关数据库的依赖导致的

 

如果有大佬还有其他的原因能够补充,希望可以在评论区里交流交流,拜谢!!!