关于SpringBoot bean无法注入的问题(与文件包位置有关)改变自动扫描的包
原因:同事在写demo时出现bean加了@component后却无法被spring扫描到(在编译的时候IDEA就提示拿不到对应的bean)的问题.
后来经过研究是跟文件包的位置有关的.
springboot的bean装配规则:
根据Application类所在的包位置从上到下进行扫描的!
“Application类”是指springboot的项目入口类.这个类的位置很关键:
如果Application类所在的包为:io.github.gefangshuai.app
那么扫描的位置就是:io.github.gefangshuai.app
包及其下的所有子包.如果需要注入的bean不在io.github.gefangshuai.app
包及其子包下,则不会被扫描到.
注:可以通过对Application类添加@ComponentScan(basePackages={“xxx.xxx”,”xxx.xxx”})来指定扫描的包,但是一旦指定后就不会在默认扫描Application类下的包.