elasticsearch源码分析之使用Guice进行依赖注入与模块化系统
来源:互联网 发布:高中物理老师 知乎 编辑:程序博客网 时间:2024/06/04 20:00
elasticsearch使用google开源的依赖注入框架guice,这个项目号称比spring快100倍,具体性能没有测试过,不过由于其代码比较简洁,比spring快很有可能,是不是快那么多就不知道了。先介绍下guice的基本使用方法。
elasticsearch是直接把guice的源码放到自己的包内(es把很多开源项目的代码都直接集成到自己项目中,省得依赖一堆的jar包,也使es的jar包达到差不多10M),在org.elasticsearch.common.inject目录下。
Guice主要是使用Module这个接口来确定各个接口和它们对应的实现。这个Module是个单例的抽象接口,通过bind(A).to(B)来绑定指定实例到这个模块中,下面看下Guice官方文档中的例子:
上面定义了一个订单模块,扩展AbstractModule这个抽象类。这个模块里面有三个实例:交易日志、支付过程和账单服务。通过bind("interface").to("implement")来使接口和实现绑定。
上面类是BillService接口的实现类。其中要注意的就是@Inject这个注释。Guice的Injector类会扫描@Inject这类注释,找到方法中传入参数的实例进行注入。如上面的CreditCardProcessor和TransactionLog。
最后,在main方法中使用Injector进行注入与获取实例。这就是使用Guice进行依赖注入的一个简单例子。elasticsearch里面的组件基本都是用上面的方式进行模块化管理,elasticsearch对guice进行了简单的封装,通过ModulesBuilder类构建es的模块,一个es节点包括下面模块:
PluginsModule:插件模块
SettingsModule:设置参数模块
NodeModule:节点模块
NetworkModule:网络模块
NodeCacheModule:缓存模块
ScriptModule:脚本模块
JmxModule:jmx模块
EnvironmentModule:环境模块
NodeEnvironmentModule:节点环境模块
ClusterNameModule:集群名模块
ThreadPoolModule:线程池模块
DiscoveryModule:自动发现模块
ClusterModule:集群模块
RestModule:rest模块
TransportModule:tcp模块
HttpServerModule:http模块
RiversModule:river模块
IndicesModule:索引模块
SearchModule:搜索模块
ActionModule:行为模块
MonitorModule:监控模块
GatewayModule:持久化模块
NodeClientModule:客户端模块
SettingsModule:设置参数模块
NodeModule:节点模块
NetworkModule:网络模块
NodeCacheModule:缓存模块
ScriptModule:脚本模块
JmxModule:jmx模块
EnvironmentModule:环境模块
NodeEnvironmentModule:节点环境模块
ClusterNameModule:集群名模块
ThreadPoolModule:线程池模块
DiscoveryModule:自动发现模块
ClusterModule:集群模块
RestModule:rest模块
TransportModule:tcp模块
HttpServerModule:http模块
RiversModule:river模块
IndicesModule:索引模块
SearchModule:搜索模块
ActionModule:行为模块
MonitorModule:监控模块
GatewayModule:持久化模块
NodeClientModule:客户端模块
阅读全文
0 0
- elasticsearch源码分析之使用Guice进行依赖注入与模块化系统(一)
- elasticsearch源码分析之使用Guice进行依赖注入与模块化系统
- Elasticsearch源码分析之一——使用Guice进行依赖注入与模块化系统
- Elasticsearch源码分析之一——使用Guice进行依赖注入与模块化系统
- ElasticSearch源码分析之一:使用Guice进行依赖注入与模块化系统
- Elasticsearch源码分析之一——使用Guice进行依赖注入与模块化系统
- Elasticsearch源码分析之一——使用Guice进行依赖注入与模块化系统
- 使用guice进行依赖注入与模块化系统
- 通过 Guice 进行依赖项注入
- 通过Guice 进行依赖项注入
- 通过Guice 进行依赖项注入
- AngularJS 模块化与依赖注入
- Guice 依赖注入
- Guice依赖注入(@Inject)
- Argo源码阅读(三):Google-guice依赖注入框架
- AngularJs的路由、模块化与依赖注入
- IOC依赖注入:google-guice
- Guice--Java依赖注入框架
- C#编程实现动态生成word文档
- 树莓派烧系统教程
- Feature Selection for Classification: A Review(二)
- 【Python】理解yield和generator(生成器)
- TCP网络通信程序的流程
- elasticsearch源码分析之使用Guice进行依赖注入与模块化系统
- codeforces510
- 一分钟了解“Matlab打印出红色报错信息error”
- 通过几段代码,理清angularJS中的$injector、$rootScope和$scope的概念和关联关系 .
- php-13
- 真正的OBS工作室版本最新消息19.0.2
- 平常水题 — Codeforces Round #415 (Div. 2) B. Summer sell-off (贪心 + 错误总结)
- android 如何预置APK
- jsp中jdbc的使用