`

dubbo中扩展点adapter实现

 
阅读更多

      dubbo中扩展点加载器,extensionloader中有个方法getAdaptiveExtension,就是获得这个扩展点的adptive实现,像大多数这个类中方法一样,先会触发加载扩展点所有类信息。然后在去创建这个类的adaptive类。

生成这个扩展点对应的adaptive类,有两种方式,一种是看扩展点所有实现,是有有某个实现带有,Adaptive注解,如果有则这个类就为这个扩展点的Adaptive类,如果没有,就会利用,javaassist技术动态生成,代码,编译生成,这个扩展点的对应的Adaptive类。
        基本逻辑就是,会为这个扩展点接口的所有,带有Adaptive标签的,方法自动生成转接代码,其他方法通过抛出exception关闭,代码的逻辑基本是,

1:先通过反射机制,来获得将要被adaptive方法的所有参数,抛出exception,返回值

2:获得url局部参数

    2.1:如果有参数直接为URL类型,则直接就使用这个参数

    2.2:如果没有参数,则看是否带这个url属性的参数。

 3:获得key值,先取得adaptive这注解的值,如为空,则直接使用扩展点接口的点分割名。

 4:判断是否有com.alibaba.dubbo.rpc.Invocation参数类

5:获得通过确定的key去获得对应的扩展实现实例。

6:直接调用扩展点实现实例的方法

 

 

分享到:
评论

相关推荐

    Sentinel 原理-全解析1

    `sentinel-extension`扩展模块对DataSource进行了扩展,而`sentinel-adapter`适配器模块则实现了对Servlet、Spring Cloud、Dubbo、gRPC等常见框架的适配。 通过分析Sentinel的样例代码,例如`FlowQpsDemo`,我们...

    alibaba sentinel使用手册说明

    3. **简单易用的扩展点**:为了更好地适应不同业务需求,Sentinel提供了丰富的扩展点,用户可以通过这些扩展点快速地定制自己的规则管理和数据源适配逻辑。 #### 三、Sentinel 架构概述 Sentinel的整体架构可以...

    sentinel控制台源代码

    - `sentinel-api-gateway-adapter`:Sentinel 为不同的 API Gateway(如 Spring Cloud Gateway、Apache Dubbo Zuul 等)提供的适配器,让这些网关能够直接使用 Sentinel 的能力。 - `sentinel-core`:Sentinel 的...

    sentinel源码包

    - `sentinel-dubbo-adapter`:针对 Dubbo 的适配。 3. **工具类与测试**: - `sentinel-util`:包含各种通用工具类和辅助方法。 - `sentinel-test`:用于单元测试和集成测试的代码。 4. **文档与示例**: - `...

    智能安防平台技术方案.pdf

    此外,系统架构中还涉及到了Adapter-Service/Component的实现,强调了平台中组件化服务和适配器模式的应用。 5. 通信与交互技术 在智能安防平台中,通信技术是一个重要的组成部分。文档中提及了多种通信技术,例如3...

Global site tag (gtag.js) - Google Analytics