通过注解ComponentScan(excludeFilters)过滤掉部分引用了类

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})
        })

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值