我在类上都加了@Autowired 为什么告诉我没有
SpringBoot项目的Bean装配默认规则是根据Application类所在的包位置从上往下扫描!
“Application类”是指SpringBoot项目入口类。这个类的位置很关键:
如果Application类所在的包为:com.demo.module,则只会扫描com.demo.module包及其所有子包,如果service或dao所在包不在com.demo.module及其子包下,则不会被扫描!
所以需在application启动类中加上
@MapperScan("com.*.dao")//加上你项目的dao或service所在文件位置即可
UserImpl类上忘记加 @Service注解了
如果是Mapper报错的话,记得在启动类上加上
//这换成你自己的mapper包路径
@MapperScan("com.eleven.mapper")
UserMaaper类上面加上注解@Mapper
UserMapper 没有注入成功,应该是UserMapper 上没有加@Mapper
这种情况有很多的可能
例如:
1、查看controller、service、mapper是否添加相应的注解(controller添加@Controller、service添加@Service、mapper添加@Mapper注解)
2、查看包结构是否正确,上面这几个包需要跟启动类在同一目录,否则不会自动映射上
2、查看@Autowired注解跟映射的注解类型是否一致,@Autowired是默认根据类型进行映射然后根据变量名
...............
userImp有问题,看一下对应实现类的注解和包扫描
看启动日志,有没有扫到这个serviceImpl的bean
把完整的异常信息发出来,看看。
问题已解决需要设置配置文件,扫描指定的包