玄学之@ComponentScan注解excludeFilters未生效

背景

因为公司项目是多模块依赖的开发模式,依赖的公共代码中有个校验逻辑的bean需要排除,然后在自己的领域工程扩展这个bean的实现,所以想到启动扫包时排除某个class,启动类配置如下:
到这本应该笑呵呵的结束~然理想是美好的,现实是骨感的;

开启排查问题之路

  1. scanner.addExcludeFilter(typeFilter);这里在添加扫描的排除

  2. 接着找出被使用的地方,定义了一个判断被加载的类是否匹配被排除

  3. 继续往上找到被调用的地方,doScan方法在扫包,断点这excludeFilters集合是空的,说明我们的配置没生效,猜测doScan这个方法有多个地方调用,断点请求这个地方还没有走到步骤1中的addExcludeFilter

  4. 其中ComponentScanBeanDefinitionParserComponentScanAnnotationParser都在调用doScan方法,然而只有ComponentScanAnnotationParser才在add注解上配置的filter class


结论印证

明显群众里有坏人呀,感觉应该还有其他地方在配置扫描类。全局搜索~嗯 什么年代了,还在混合编程!!!最后不想跟了,总结下:注解上配置的排除覆盖不了xml中定义的scan,空了在找找是否有类似全局的排除吧。