玄学之@ComponentScan注解excludeFilters不起作用
玄学之@ComponentScan注解excludeFilters未生效
背景
因为公司项目是多模块依赖的开发模式,依赖的公共代码中有个校验逻辑的bean需要排除,然后在自己的领域工程扩展这个bean的实现,所以想到启动扫包时排除某个class,启动类配置如下:
到这本应该笑呵呵的结束~然理想是美好的,现实是骨感的;
开启排查问题之路
scanner.addExcludeFilter(typeFilter);这里在添加扫描的排除
接着找出被使用的地方,定义了一个判断被加载的类是否匹配被排除
继续往上找到被调用的地方,doScan方法在扫包,断点这excludeFilters集合是空的,说明我们的配置没生效,猜测doScan这个方法有多个地方调用,断点请求这个地方还没有走到步骤1中的addExcludeFilter
其中ComponentScanBeanDefinitionParser和ComponentScanAnnotationParser都在调用doScan方法,然而只有ComponentScanAnnotationParser才在add注解上配置的filter class
结论印证
明显群众里有坏人呀,感觉应该还有其他地方在配置扫描类。全局搜索~嗯 什么年代了,还在混合编程!!!最后不想跟了,总结下:注解上配置的排除覆盖不了xml中定义的scan,空了在找找是否有类似全局的排除吧。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 小旋风巡山咯
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果