首页 > 其他分享 >dremio ioc 机制简单说明

dremio ioc 机制简单说明

时间:2023-03-31 20:07:05浏览次数:32  
标签:dremio java guice com Binder 机制 ioc

dremio 对于服务的依赖管理以及处理没有直接使用google guice,而是dremio 自己包装了一个类似guice的ioc 能力

提供的能力说明

因为对于ioc 来说需要包含不同的几种服务注入模式(属性注入,构造函数注入),服务也会包含不同的scope (单例,实例,provider模式)
同时为了处理不同注入注解的处理,dremio 也包装了自己的处理,相比直接使用guice dremio 也包装了不少其他的能力(remove,replace )

SingletonRegistry参考类图

SingletonRegistry 是对于服务的直接使用(ioc 以及对于ioc 的扩展能力),下图是提供的能力以及继承关系

dremio ioc 机制简单说明_ide

 

 

说明

dremio 对于ioc 的处理核心是为了服务dremio 自己的service 机制,相对传统的ioc 机制扩展了不少,简单了解dremio 的ioc 机制有助于更好的学习dremio 源码
当然dremio 也是可以支持将guice 的ioc 能力集成到系统中的,主要是Binder 中的,接口定义如下,目前官方代码中并没有直接传递Injector的,主要是在测试代码
中使用到了,所以dremio 部分源码我们看起来比较杂乱,不像trino 代码很清晰(遵循了guice 的实践玩法)

 

public interface Binder extends BindingCreator, BindingProvider {
public interface Binder extends BindingCreator, BindingProvider {
  /**
   * Temporary way to register a Guice Injector with Binder as a fallback mechanism
   *
   * @param injector the Guice instance to use as an fallback
   */
  void registerGuiceInjector(Injector injector);
}

参考资料

common/src/main/java/com/dremio/service/BinderImpl.java
common/src/main/java/com/dremio/service/Binder.java
common/src/main/java/com/dremio/service/SingletonRegistry.java
sabot/kernel/src/test/java/com/dremio/exec/server/SabotNode.java

标签:dremio,java,guice,com,Binder,机制,ioc
From: https://blog.51cto.com/rongfengliang/6162231

相关文章

  • 38、K8S-安全机制-RBAC之(cluster)role、(cluster)rolebinding
    1、RBAC1.1、基本简介1.1.1、简介RBAC使用rbac.authorization.k8s.ioAPIGroup来实现授权决策,允许管理员通过KubernetesAPI动态配置策略。Kubernetes的基本特性就是它的所有资源对象都是模型化的API对象,我们可以基于api-server对各种资源进行增、删、改、查等操作,但......
  • 设计模式(三十)----综合应用-自定义Spring框架-自定义Spring IOC-定义bean、注册表相
    现要对下面的配置文件进行解析,并自定义Spring框架的IOC对涉及到的对象进行管理。<?xmlversion="1.0"encoding="UTF-8"?><beans>  <beanid="userService"class="com.itheima.service.impl.UserServiceImpl">    <propertyname=&qu......
  • ABP VNext 的日志机制 + SeriLog
    **ABPVNext的日志机制**正用ABPVNext做个系统,由于框架默认带来日志处理机制,开发阶段基本能用,也一直没有去动它,快要上线了,思考了一下正式环境的日志管理流程,由于系统不大,预计访问量可能也不大,但默认的日志管理太简单,不便于后期日常维护。缺点如下:默认的日志只有单个文件,写上几......
  • Mysql 事务隔离机制、锁机制、MVCC多版本并发控制隔离机制、日志机制、
    原子性(Atomicity)当前事务的操作要么同时成功,要么同时失败。原子性由undolog日志来实现。一致性(Consistency):使用事务的最终目的,由其它3个特性以及业务代码正确逻辑来实现。隔离性(lsolation):在事务并发执行时,他们内部的操作不能互相干扰,隔离性由MySQL的各种锁以及MVC......
  • 37、K8S-安全机制-CA、User、Cluster
    1、证书信息1.1、简介我们知道,通过kubeadm在创建集群的时候,其中有一步就是:生成kubernetes控制组件的kubeconfig文件及相关的启动配置文件,通过各种conf文件,让不同的组件具备操作相关资源的权限。1.2、位置master1~]#ll/etc/kubernetes/pki/-rw-r--r--1rootroot131......
  • 36、K8S-安全机制-ServiceAccount(SA)
    1、基础知识1.1、场景基础1.1.1、应用场景对于任何一种应用场景,其权限的认证管理都是非常重要的,对于linux系统来说,selinux、防火墙、pam、sudo等等,其核心的目的都是为......
  • Node.js:模块查找,引用及缓存机制
    1.Node.js的模块载入方式与机制Node.js中模块可以通过文件路径或名字获取模块的引用。模块的引用会映射到一个js文件路径,除非它是一个Node内置模块。Node的内置模块公开了......
  • 异常机制
    异常机制什么是异常就是在运行过程中出现的意外,遇到的一些异常问题(Exception)如:文件找不到、网络连接失败、非法参数异常体系结构java把异常当作对象来处理,并定义了一......
  • 包机制,JavaDoc
    包机制包机制语法格式为:packagepkg1[.pak2[.pak3...]]一般利用公司域名倒置作为包名;为了能够使用某个包的成员,我们需要再java程序中明确导入该包,使用“import......
  • SIOCSIFADDR:File exist(2023.3.28)
    通常为以下两种情况:①ip冲突导致 ②系统环境配置dhcp且分配ip地址失败使用ifconfig命令设置静态ip,有时掩码设置的明明是255.255.0.0,实际却变成255.255.255.0,有时甚......