Dubbo源码学习--Dubbo与Spring融合

悠悠 2022-05-28 10:11 241阅读 0赞

Spring是java开发中最常用的实例管理框架了,接下来我们简单介绍一下Dubbo是如何和Spring进行整合的。

1、Dubbo Spring开发配置

在dubbo通过spring进行开发时一般会进行如下配置,dubbo使用的是一些自定义的标签

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
  6. <dubbo:application name="hello-world-app" />
  7. <dubbo:registry address="multicast://224.5.6.7:1234" />
  8. <dubbo:protocol name="dubbo" port="20880" />
  9. <dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoServiceLocal" />
  10. <dubbo:reference id="demoServiceRemote" interface="com.alibaba.dubbo.demo.DemoService" />
  11. </beans>

2、Dubbo标签解析

在学习Dubbo的标签解析之前可以先看看 Spring源码学习—自定义标签,这样对Dubbo的相关标签解析就比较容易接受了,简单来说Dubbo提供了一个命名空间解析器DubboNamespaceHandler,在DubboNamespaceHandler中完成了dubbo相关自定义标签的解析操作。

  1. public class DubboNamespaceHandler extends NamespaceHandlerSupport {
  2. static {
  3. Version.checkDuplicate(DubboNamespaceHandler.class);
  4. }
  5. public void init() {
  6. registerBeanDefinitionParser("application", new DubboBeanDefinitionParser(ApplicationConfig.class, true));//应用相关的标签解析
  7. registerBeanDefinitionParser("module", new DubboBeanDefinitionParser(ModuleConfig.class, true));//模块相关的标签解析
  8. registerBeanDefinitionParser("registry", new DubboBeanDefinitionParser(RegistryConfig.class, true));//注册器相关的标签解析
  9. registerBeanDefinitionParser("monitor", new DubboBeanDefinitionParser(MonitorConfig.class, true));//监控器相关的标签解析
  10. registerBeanDefinitionParser("provider", new DubboBeanDefinitionParser(ProviderConfig.class, true));//服务提供者相关的标签解析
  11. registerBeanDefinitionParser("consumer", new DubboBeanDefinitionParser(ConsumerConfig.class, true));//服务消费者相关的标签解析
  12. registerBeanDefinitionParser("protocol", new DubboBeanDefinitionParser(ProtocolConfig.class, true));//协议相关的标签解析
  13. registerBeanDefinitionParser("service", new DubboBeanDefinitionParser(ServiceBean.class, true));//服务发布相关的标签解析
  14. registerBeanDefinitionParser("reference", new DubboBeanDefinitionParser(ReferenceBean.class, false));//服务引用相关的标签解析
  15. registerBeanDefinitionParser("annotation", new AnnotationBeanDefinitionParser());//注解相关的标签解析
  16. }
  17. }

通过对xml的配置解析产生对应的bean实体,完成相关服务的准备工作。

在Dubbo发布的jar中会携带以下DubboNamespacehandler相关的文件。

70

发表评论

表情:
评论列表 (有 0 条评论,241人围观)

还没有评论,来说两句吧...

相关阅读