在阐述dubbo原理之前,我先介绍一下dubbo与spring怎么糅合在一块,为什么dubbo标签,spring可以解析以及dubbo spi是什么,这是学习dubbo的第一步,接下来,我们会从源码的角度,进一步解析dubbo如何实现服务暴露,注册,路由,负载均衡,线程模型,mock机制,超时重试,服务发现,启动检查,令牌,优雅关机,协议,序列化,编解码,缓存,泛化,事件 等,欢迎大家指正和学习
Spring提供了可扩展Schema的支持,完成一个自定义配置一般需要以下步骤:
- 设计配置属性和JavaBean
- 编写XSD文件
- 编写NamespaceHandler和BeanDefinitionParser完成解析工作
- 编写spring.handlers和spring.schemas串联起所有部件
- 在Bean文件中应用
dubbo中所有dubbo的标签,都统一用DubboBeanDefinitionParser进行解析,基于一对一属性映射,将XML标签解析为Bean对象。
下面我们就用dubbo为例来看如何实现对Spring配置的标签扩展。(对应的项目我已经上传至github,地址:https://github.com/xuws2gj/spring-schema.git)
1)设计配置属性和JavaBean