【Dubbo】SPI 机制原理分析 --激活扩展点 (Activate)

﹏ヽ暗。殇╰゛Y 2023-01-07 13:24 268阅读 0赞

自动激活扩展点,有点类似 springboot 的时候用到的 conditional,根据条件进行自动激活。

但是这里设计的初衷是,对于一个类会加载多个扩展点的实现,这个时候可以通过自动激活扩展点进行动态加载, 从而简化配置我们的配置工作。

@Activate 提供了一些配置来允许我们配置加载条件,比如 group 过滤,比如 key 过滤。

举个例子把,我们来看看 org.apache.dubbo.Filter 这个类,它有非常多的实现,比如说 CacheFilter,这个缓存过滤器,配置信息如下:

在这里插入图片描述

  • group 表示客户端和和服务端都会加载
  • value 表示 url 中有 cache_key 的时候

测试代码:不添加注释代码(url加入“cache”)时结果是10,添加注释代码后结果是11

  1. public static void main(String[] args) {
  2. ExtensionLoader<Filter> loader=ExtensionLoader.getExtensionLoader(Filter.class);
  3. URL url=new URL("","",0);
  4. // url=url.addParameter("cache","cache");
  5. List<Filter> filters=loader.getActivateExtension(url,"cache");
  6. System.out.println(filters.size());
  7. }

结果如下:
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,268人围观)

还没有评论,来说两句吧...

相关阅读