今天改一个项目,使用的springboot,但是启动的时候报有个mapper无法注入,肯定是扫描不到所以注入失败。
一般在application加上这两个注解,然后在各自的类上加上,@service等注解,使用@autowire就可以完成注入过程。
@SpringBootApplication
@MapperScan("要扫描的包全限定名")
但是我这里这些注解都使用了,没有问题。
错误提示
***************************
APPLICATION FAILED TO START
***************************
Description:
Field menuMapper in com.fast.project.system.service.impl.MenuServiceImpl required a bean of type 'com.fast.project.system.mapper.MenuMapper' that could not be found.
Action:
Consider defining a bean of type 'com.fast.project.system.mapper.MenuMapper' in your configuration.
Disconnected from the target VM, address: '127.0.0.1:9981', transport: 'socket'
Process finished with exit code 0
这是出现的包扫描问题。
目录,最开始是这样放的
然后改成
这些要扫描的文件在,启动类的同级目录的下级目录里面,然后提示最开始的报错。
接着改成
把存这些bend类的文件,中间再加一级目录。也就是放到启动类同级目录--》的下级目录--》的下级目录。然后启动成功。
大家一般说把这些类放到启动类同级目录的下级目录就行。这里测试不行,再往下放一级就可以了。
springboot很多情况是约定的,正常情况下@SpringBootApplication @MapperScan("包名")这两个注解正常使用就可以解决问题了。不过如果解决不了,可以试着往下放一级目录,试试是不是可以解决。