【Dubbo】SPI 机制原理分析 --激活扩展点 (Activate)
自动激活扩展点,有点类似 springboot 的时候用到的 conditional,根据条件进行自动激活。
但是这里设计的初衷是,对于一个类会加载多个扩展点的实现,这个时候可以通过自动激活扩展点进行动态加载, 从而简化配置我们的配置工作。
@Activate 提供了一些配置来允许我们配置加载条件,比如 group 过滤,比如 key 过滤。
举个例子把,我们来看看 org.apache.dubbo.Filter 这个类,它有非常多的实现,比如说 CacheFilter,这个缓存过滤器,配置信息如下:
- group 表示客户端和和服务端都会加载
- value 表示 url 中有 cache_key 的时候
测试代码:不添加注释代码(url加入“cache”)时结果是10,添加注释代码后结果是11
public static void main(String[] args) {
ExtensionLoader<Filter> loader=ExtensionLoader.getExtensionLoader(Filter.class);
URL url=new URL("","",0);
// url=url.addParameter("cache","cache");
List<Filter> filters=loader.getActivateExtension(url,"cache");
System.out.println(filters.size());
}
结果如下:
还没有评论,来说两句吧...