天天看点

spring [email protected]注入失败和自定义controller扫描失败的解决方法

刚接触spring boot,从网上找了一篇教程,试着做一个spring boot+mybatis的小demo,使用STS构建的,IDE用的是eclipse

参考了这篇教程https://segmentfault.com/a/1190000017211657

spring [email protected]注入失败和自定义controller扫描失败的解决方法

 基本是参照教程写的,那篇教程写得不错,讲解得比较详细,但是我在运行的时候出现了两个问题

一、controller包下面的userController扫描不到,所以里面的 @RequestMapping不起作用

spring [email protected]注入失败和自定义controller扫描失败的解决方法

 解决方法:

在网上找到了解决方法,就是在启动类加上注解@ComponentScan,@ComponentScan是spring boot专门用来扫@Component,@Service, @Repository, @Controller等注解的注解。但是到了我的demo里面还是不起作用,然后又去看了一下注解@ComponentScan的文档,有这么一段话

spring [email protected]注入失败和自定义controller扫描失败的解决方法

大概的意思就是要给 

basePackageClasses

or

basePackages

 指定一个包的话,就会从这个包开始扫描,如果不指定的话,就会从加了这个注解的类所在的包开始扫描。所以官方推荐是把启动类放在bean,controller,service,dao等需要扫描的包的上一级,但是我这样试过之后,在我的环境之下不起作用,搞不懂是为什么,所以后来我就把启动类放到了controller包中(即使这样做可能不太规范)

因此我做了以下的修改

spring [email protected]注入失败和自定义controller扫描失败的解决方法

从example包开始扫描,这样的话example下面的bean,controller,service,dao包里面的注解就都能扫描到了。

二、@ Autowired注入失败

spring [email protected]注入失败和自定义controller扫描失败的解决方法

 解决方法:

在网上找到的解决方法是添加注解@MapperScan

spring [email protected]注入失败和自定义controller扫描失败的解决方法

当使用Java进行配置时,可以用@MapperScan注解用来注册Mabatis映射接口

于是我做了以下的修改

spring [email protected]注入失败和自定义controller扫描失败的解决方法

 两个地方修改之后,就完全运行起来了

spring [email protected]注入失败和自定义controller扫描失败的解决方法

 问题解决,赶紧写了这篇博客,希望能够帮到遇到相同问题的人

继续阅读