关于SpringBoot bean无法注入的问题(与文件包位置有关)改变自动扫描的包

Posted 栗霖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于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类下的包.





以上是关于关于SpringBoot bean无法注入的问题(与文件包位置有关)改变自动扫描的包的主要内容,如果未能解决你的问题,请参考以下文章

关于SpringBoot bean无法注入的问题(与文件包位置有关)改变自动扫描的包

关于springMVC中bean无法注入的问题

SpringBoot拦截器中Bean无法注入(转)

bean无法被注入的常见问题和springboot的三种扫描并加载Bean方式

springboot 启动排除某些bean 的注入

SpringBoot拦截器中service或者redis注入为空的问题