Springboot项目排除Bean的方法

前言:

        在最近工作中,相关业务代码需要引用一个工具包。原来的同事在工具包中,封装了Spring AOP切面的Bean,但是这样的工具包非常不友好,工具包不应该有这些特殊的处理。有了这些特殊的处理,引用方也要特殊处理。

正文:

        因为工具包中封装了Spring切面bean,我首先想到在@SpringBootApplication注解中exclude属性添加该类,但是报“The following classes could not be excluded because they are not auto-configuration classes:XXXXXXXX”错误。原因是:@SpringBootApplication注解的exclude只可以排除spring自动配置的bean。

        经过搜索资料,@ComponentScan注解的excludeFilters可以排除该bean,具体写法如下:

@ComponentScan(value = "com.xxx",excludeFilters = {@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE,classes={Xxx.class})})

        @ComponentScan注解的excludeFilters一个支持五种类型:FilterType.ANNOTATION:按照注解方式、FilterType.ASSIGNABLE_TYPE:按照指定类型的方式、FilterType.ASPECTJ:使用ASPECTJ表达式的方式、FilterType.REGEX:利用正则表达式方式、FilterType.CUSTOM:自己实现TypeFilter接口进行自定义规则。每种规则如何使用,请大家自行学习一下吧。

你可能感兴趣的:(Spring,#Springboot,spring,boot,spring)