zoukankan      html  css  js  c++  java
  • 【Dubbo】05. Dubbo SPI中的Adaptive

    05. Dubbo中的Adaptive

    1. 什么是Adaptive功能

    Dubbo中的Adaptive功能,主要解决的问题是如何动态的选择具体的扩展点。通过getAdaptiveExtension统一对指定接口对应的所有扩展点进行封装,通过URL的方式对扩展点来进行动态选择。(dubbo中所有的注册信息都是通过URL的形式进行处理的)这里同样采用相同的方式进行实现。

    2. 实现方式

    前置内容参考:Dubbo中的SPI中的3.1节。

    2.1

    dubbo_spi_demo_apicom.dxh.service.HelloService中新增一个方法,该方法有一个参数URL(import org.apache.dubbo.common.URL),且该方法使用@Adaptive注解。

    package com.dxh.service;
    import org.apache.dubbo.common.URL;
    import org.apache.dubbo.common.extension.Adaptive;
    import org.apache.dubbo.common.extension.SPI;
    //这里的“增加的dog”是默认值
    @SPI("dog")
    public interface HelloService {
        String sayHello();
        
        @Adaptive
        String sayHello(URL url);
    }
    

    2.2

    新增了方法,所以补充实现类

    2.3

    dubbo_spi_demo_main中新建类

    package com.dxh;
    import com.dxh.service.HelloService;
    import org.apache.dubbo.common.URL;
    import org.apache.dubbo.common.extension.ExtensionLoader;
    
    public class DubboSpiMainTestAdaptive {
        public static void main(String[] args) {
            HelloService adaptiveExtension = ExtensionLoader.getExtensionLoader(HelloService.class).getAdaptiveExtension();
            URL url = URL.valueOf("test://localhost/hi?hello.service=human");
            String hello = adaptiveExtension.sayHello(url);
            System.out.println(hello);
        }
    }
    

    注释:

    • 因为在这里只是临时测试,所以为了保证URL规范,前面的信息均为测试值即可,关键的点在于hello.service参数,这个参数的值指定的就是具体的实现方式。关于为什么叫hello.service是因为这个接口的名称,其中后面的大写部分被dubbo自动转码为.分割。
    • 通过getAdaptiveExtension来提供一个统一的类来对所有的扩展点提供支持(底层对所有的扩展点进行封装)。
    • 调用时通过参数中增加URL对象来实现动态的扩展点使用。

    =号后面的内容就是之前META_INF.dubbo中配置的key
    截屏2021-04-25 下午11.01.38

    通过@SPI("dog")配置默认值,这样url中如果不传后面的就以默认值为准
    截屏2021-04-25 下午11.09.01

  • 相关阅读:
    HCIA-IoT 华为认证物联网工程师
    [书目20210522]投资最重要的事
    [书目20210414]海龟交易法则
    [书目20210224]陆蓉 行为金融学讲义
    [书目20210207]肖星的财务思维课
    [转]昂克英文君 一张图告诉你英语该怎么学
    Cloud Native
    Aerospike-介绍
    Groovy使用场景
    javaStream与响应式流
  • 原文地址:https://www.cnblogs.com/isdxh/p/14702603.html
Copyright © 2011-2022 走看看