我这里实现了一个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