今天遇到了SpringBoot里面@Autowired注解失败的的问题,在网上也搜了下,有两种情况会出现这个问题,特此记录下来,以后好记住这个教训。
- *第一种情况
Spring没扫描到包,SpringBoot项目的Bean装配默认规则是根据Application类所在的包位置从上往下扫描!“Application类”是指SpringBoot项目入口类。这个类的位置很关键:如果Application类所在的包为:com.boot.app,则只会扫描com.boot.app包及其所有子包,如果service或dao所在包不在com.boot.app及其子包下,则不会被扫描!即, 把Application类放到dao、service所在包的上级,com.boot.Application知道这一点非常关键 - *第二种情况
如果类A中存在成员属性b, b是通过@Autowired自动注入,而类A的实例是通过new的方式产生的,那么自动注入会失效的,我就是这种情况,其实问题很简单。以后记住这个教训。