错误描述:
问题在重构项目以后,之前的配置无法满足扫描到有bean的文件需要在启动类上添加注解
@ComponentScan(basePackages = {"com.common.domain.config"})
通过写表达式的方式来进行扫描有bean的包即可完成运行可写多个使用“,”号隔开
表达式书写规则:
@ComponentScan注解的basePackages属性用于指定要扫描的包的路径。它可以接受字符串数组,表示需要扫描的一个或多个包路径。basePackages属性可以使用通配符表达式来扫描符合特定规则的包。
例如,如果需要扫描com.XXXX.common.domain.config及其子包下的所有组件,可以使用以下表达式:
@ComponentScan(basePackages = {"com.XXXX.common.domain.config"})
如果需要扫描多个包,则可以使用以下表达式:
@ComponentScan(basePackages = {"com.XXXX.package1", "com.XXXX.package2"})
如果需要扫描某些包中的所有类,包括不同的子包和头文件,则可以使用通配符表达式。例如,以下表达式将扫描以com.XXXX.common.domain.config开头的任何包和子包中的所有组件:
@ComponentScan(basePackages = {"com.XXXX.common.domain.config.*"})
通配符“*”表示任何文本字符序列(不包括路径分隔符“/”)。
表达式中的*和**的区别
在Spring中,通配符' *'和' ** '在@ComponentScan注解中的basePackages属性中都有不同的用法。
通配符''通常只用于表示在包名中的最后一级进行匹配,例如:com.XXXX.common.,表示扫描com.XXXX.common包及其直接子包下的组件。
而' ** '则用于表示扫描所有的子包和被扫描包中的所有组件,例如:com.XXXX. **,表示扫描com.bwie包及其所有子包中的组件。
需要注意的是,在使用' ** '表达式时,如果没有指定特定的子包或组件类,则可能会扫描更多的包和文件,导致性能下降,因此需要谨慎使用。