查了很多篇多博客,大多数都不能解决我的问题,快接近放弃时忽然看到一篇博客介绍了Application类所在包位置对Autowired的影响,对照着做后问题霎时解决
参考博客如下:
Spring Boot @Autowired 沒法自動注入的問題 - IT閱讀 (itread01.com)
新手请教:spring boot 中@Autowired注解无法自动注入的错误。-CSDN论坛
许多博客的解决方法都大同小异,大部分解决方案如下:
1、降低@Autowired的警告级别为warning,如此就能跳过报错,但实际运行时还是会因为无法绑定而报错,指标不治本的方法,pass
2、为绑定类加上@Repository或@Component或@Service的注解将该类标识为Bean,这是一个解决方法,但我本来加过了,此方法行不通
最后发现错误的原因是:
我的项目启动类SpringBootApplication所在的包路径为package com.example.xxx,而@Autowired包自动扫描只会扫描到SpringBootApplication所在的包及其子包,但需要绑定的Bean在包路径在package com.example.dao,不符合该条件,故没有被扫描到
解决方法:
将SpringBootApplication所在的包路径改为com.example