SpringBoot项目中排除@ComponentScan注解扫描的类

SpringBoot中使用@ComponentScan排除指定类

问题 ?

在 SpringBoot项目中有时候某些类不需要被 @ComponentScan注解给扫描到, 比如在给某个服务的Ribbon自定义配置类时,为得防止 @Configuration注解的类所在的包与 @ComponentScan扫描的包重叠.

解决 :

使用 @ComponeentScanexcludeFilters 属性进行设定我们需要排除的类.

例子 :


@ComponentScan(excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = 类名.class))
public class 启动类Application {
		..........
}

缺点 : 如需要排除的类较多,一个一个的指定,太麻烦.



因为 SpringBoot@SpringBootApplication 会自动扫描本类所在包下的所有类和子类,需要排除的类直接定义在Springboot启动类所在包外面即可.

缺点 : 不说你也能感觉的出来吧.看具体情况吧.



使用自定义注解来实现,解决了第一个方法麻烦的问题,加上了自定义的注解的类,在此指定下排除即可.
@ComponentScan(excludeFilters = @ComponentScan.Filter(
		type = FilterType.ANNOTATION, 
		classes = ScanIgnore.class))

结尾 :

可以发现都是通过 FilterType 这个属性来进行类的过滤的,当然它还有其他的属性值,有不同的效果,可以根据不同情况来选择。

你可能感兴趣的:(SpringBoot,spring,boot,ribbon,java,spring)