ComponentScan与excludeFilters简介
@CompentScan 注解配置需要扫描的包
excludeFilters 是其中一个配置项,用于排除不需要扫描的类
FilterType
- ANNOTATION
根据注解来排除
- ASSIGNABLE_TYPE
根据类类型来排除
- ASPECTJ
根据AspectJ表达式来排除
- REGEX
根据正则表达式来排除
- CUSTOM
自定义FilterClass排除,需要实现
org.springframework.core.type.filter.TypeFilter接口
应用场景
比如我们在引用一个第三方包的时候,我们只想使用其中一部分,另一部分并不像使用,如:不想使用redis。这时候如果我们就可以使用这个注解来进行过滤。当然这里要注意,一定要把所有使用到redis的地方都过滤掉,否则就可能出现以下异常:
A component required a bean of type 'com.xxxx.xxx' that could not be found
示例:
这里使用到了正则与类的类型方式来进行过滤。
@ComponentScan(
excludeFilters ={ @ComponentScan.Filter(type = FilterType.REGEX, pattern = {"com\\.demo\\.cloud\\.redis\\..*"}),
@ComponentScan.Filter(type = FilterType.REGEX, pattern = "com\\.demo\\.cloud\\.test\\.service\\..*"),
@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {UserManagerService.class})
})
本文介绍了@ComponentScan注解在Spring框架中的使用,特别是excludeFilters属性如何排除不需扫描的类。通过FilterType.ANNOTATION、ASSIGNABLE_TYPE、ASPECTJ、REGEX和CUSTOM等方式进行过滤,例如在示例中使用了正则表达式和类类型排除特定包和类,以避免不必要组件的加载导致的问题。了解并正确使用excludeFilters能够帮助优化应用启动时间和提高性能。
过滤掉部分引用了类&spm=1001.2101.3001.5002&articleId=124481732&d=1&t=3&u=fecf26c0ecd94ddc8500a988b1a4fd79)
1228

被折叠的 条评论
为什么被折叠?



