文档章节

dubbo “插入”到spring框架

M
 Mackchao_Sun
发布于 2015/10/29 14:08
字数 606
阅读 117
收藏 4


         作为一个分布式服务治理框架,dubbo做的非常好,在业界使用很广,所以最近研究了下这个框架。任何框架要研究其原理最好的办法之一就是沿着其运行流 程进行追踪,这样就能从上到下,从粗到细对一个系统进行了解。今天,我们要说明的 就是dubbo如何启动的。

        dubbo是基于Spring进行开发的,而且扩展了Spring的XML schema和注解标签,其实这里也就是整个dubbo的切入点。dubbo除去依赖其他的第三方框架外,整个框架只有一个jar包,可谓是精致。在这个 jar包的NET-INF目录下有两个文件:spring.handlers和spring.schemas。其中spring.schemas中定义的 就是扩展的spring配置标签,而且spring.handlers中定义的就是这些schema的处理类,就是这个类将dubbo组件“插入”到 spring这个平台里的。(关于如何自定义spring配置的schema,网上很多,这里只简单概括)Spring在启动的时候会扫描MET- INF下所有的spring.handlers等文件,找到其中的标签处理类,并运行其init方法。

        这里要插个知识点“spring的启动过程”。spring启动过程,从宏观角度来讲分为两个阶段。第一个阶段完成spring配置文件的解析,或者 spring注解的解析最终将这些配置或者注解解析成BeanDefinition对象,然后进入下一个阶段,比如我们经常在spring配置文件中使用 的占位符替换工作就是在这个阶段完成的。在第二个阶段中,spring用之前解析好的BeanDefinition对象来完成bean的初始化和组装工 作,比如我们使用spring事务时的事务proxy就是这个阶段完成注入到service对象中的。

        在这个init方法中,dubbo将自己的标签 (application,module,registry,monitor,provider,consumer,protocol,service,reference) 处理类注册到spring中,而这些类会完成对自己所负责的标签的解析工作,将标签最终转换为bean的描述对象BeanDefinition并返回给 spring,而spring拿到这些标签对象完成bean的初始化、依赖注入(比如注入对RMI端的proxy对象)。

这就是dubbo的宏观启动流程

本文转载自:http://blog.csdn.net/achilles12345/article/details/41789527

M
粉丝 4
博文 158
码字总数 29095
作品 0
朝阳
技术主管
私信 提问
探究Dubbo的ExtensionLoader

一定要对比JDK的SPI机制,才能更好的理解Dubbo的SPI实现! 扩展点:即接口扩展:扩展点的实现,即接口的实现类 获取扩展点的ServiceLoader实例 通过扩展点的ServiceLoader实例,完成扩展的方...

向码而生
2018/09/03
174
0
Dubbo源码-Dubbo是如何随心所欲自定义XML标签的

叨叨 今天考虑了很久要不要写这篇文章。 距离《Dubbo源码》系列的开篇到现在已经快两个月时间了。当时是想着工作上的RPC框架使用存在一些让人头疼的问题,就来看看Dubbo给出了一套什么样的解...

Jackie_Zheng
2018/05/20
0
0
微服务选择Spring Cloud还是Dubbo?

点击关注 异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书。 ——异步小编 在阿里巴巴的生态中,微服务逐渐成为主要的服务形态,伴随着容器...

异步社区
2018/04/27
0
0
Dubbo面试20问!这些题你都遇到过吗?

作者:Dean Wang https://deanwang1943.github.io/bugs/2018/10/05/面试/饿了么/dubbo 面试题/ 1、dubbo是什么 dubbo是一个分布式框架,远程服务调用的分布式框架,其核心部分包含: 集群容错...

安小乐
06/10
88
0
构建dubbo分布式平台-dubbo简介

Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的...

明理萝
2018/07/30
146
1

没有更多内容

加载失败,请刷新页面

加载更多

Java注解合并,注解继承

spring中有时候一个类上面标记很多注解。 实际上Java注解可以进行继承(也就是把多个注解合并成1个) 比如说SpringMVC的注解 @RestController@RequestMapping("/person") 可以合并为一个 @P...

物种起源-达尔文
20分钟前
4
0
撤消Git中一个文件的工作副本修改?

在最后一次提交之后,我修改了工作副本中的一堆文件,但是我想撤消对这些文件之一的更改,例如将其重置为与最新提交相同的状态。 但是,我只想撤消仅一个文件的工作副本更改,而没有其他操作...

技术盛宴
55分钟前
4
0
Qt编写气体安全管理系统28-模拟工具

一、前言 模拟工具在一些涉及到硬件通信的程序中特别有用,也特别需要,回顾这十年来做过的项目,95%的项目都是软硬件交互的,貌似软硬件结合的项目更有生命力一些,纯软件的或者纯硬件的,并...

飞扬青云
今天
4
0
关于生活方式

生活就是生活,但难免和工作混在一起,所以要建立自己的生活方式,把工作稍微隔开点。 首先呢,每周放假的两天肯定会: 洗衣服,收拾屋子,列计划是必须要做的事情。 (这里可能还包含一些处...

T型人才追梦者
今天
6
0
JVM

一、JVM一些基本概念 1、JVM和普通虚拟机 JVM:Java Virtual Machine,程序自己独立的运行环境;堆栈、寄存器、字节码指令;可以运行多种语言:Java、Scala、Grovvy; 普通虚拟机:能完整提供...

请把小熊还给我_m
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部