曹工说Spring Boot源码(27)-- Spring的component-scan,光是include-filter属性的各种配置方式,就够玩半天了.md (5)

我这里实现了一个typeFilter,如下:

/** * 自定义的类型匹配器,如果注解了我们的DubboExportService,就匹配;否则不匹配 */ public class CustomTypeFilterByName implements TypeFilter { @Override public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException { boolean b = metadataReader.getAnnotationMetadata().hasAnnotation(DubboExportService.class.getName()); if (b) { return true; } return false; } }

判断很简单,注解了DubboExportService就行。

看看怎么配置:

<context:component-scan use-default-filters="false" base-package="org.springframework.test"> <context:include-filter type="custom" expression="org.springframework.test.custom.CustomTypeFilterByName"/> </context:component-scan> 总结

好了,说了那么多,大家都理解没有呢,如果没有,建议把代码拉下来一起跟着学。
其实dubbo貌似就是通过如上的自定义typeFilter来实现的,回头我找找相关源码,佐证一下,补上。

demo的源码在:

https://gitee.com/ckl111/spring-boot-first-version-learn/tree/master/all-demo-in-spring-learning/spring-annotation-reader-demo

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppdjd.html