Spring boot basePackages 通配符* 找不到Bean

今天遇到了一个关于spring boot 组件@ComponentScan 中basePackages 使用通配符* 找不到Bean的问题

springboot中找不到resources里面的xml_spring


目录结构中BussinessPerson与Dog类中都有标注有@Component注解,结果扫描不到。

然后删除通配符,结果运行成功。

之后修改成了**通配符,结果也运行成功了。

之后打了个断点,查看了这三种情况时,classPath的路径。结果如下:

springboot中找不到resources里面的xml_java_02


springboot中找不到resources里面的xml_spring_03


springboot中找不到resources里面的xml_spring_04


结果分析:

basePackages.*:这种情况路径后缀会变成*/**/*.class,组件只会扫描路径包中的子包里面的类,而当前包中的Bean不会被扫描到。

basePackages.**: 这种情况路径后缀会变成**/**/*.class,组件会扫描当前包以及子包中的Bean.

basePackages:这种情况路径后缀会变成/**/*.class,组件会扫描当前包以及子包中的Bean.

文章知识点与官方知识档案匹配,可进一步学习相关知识



Spring boot basePackages 通配符* 找不到Bean

今天遇到了一个关于spring boot 组件@ComponentScan 中basePackages 使用通配符* 找不到Bean的问题

springboot中找不到resources里面的xml_spring


目录结构中BussinessPerson与Dog类中都有标注有@Component注解,结果扫描不到。

然后删除通配符,结果运行成功。

之后修改成了**通配符,结果也运行成功了。

之后打了个断点,查看了这三种情况时,classPath的路径。结果如下:

springboot中找不到resources里面的xml_java_02


springboot中找不到resources里面的xml_spring_03


springboot中找不到resources里面的xml_spring_04


结果分析:

basePackages.*:这种情况路径后缀会变成*/**/*.class,组件只会扫描路径包中的子包里面的类,而当前包中的Bean不会被扫描到。

basePackages.**: 这种情况路径后缀会变成**/**/*.class,组件会扫描当前包以及子包中的Bean.

basePackages:这种情况路径后缀会变成/**/*.class,组件会扫描当前包以及子包中的Bean.