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

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

1、Dubbo Spring开发配置

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

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
    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">  
    <dubbo:application name="hello-world-app"  />  
    <dubbo:registry address="multicast://224.5.6.7:1234" />  
    <dubbo:protocol name="dubbo" port="20880" />  
    <dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoServiceLocal" />  
    <dubbo:reference id="demoServiceRemote" interface="com.alibaba.dubbo.demo.DemoService" />  
</beans>
2、Dubbo标签解析

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

public class DubboNamespaceHandler extends NamespaceHandlerSupport {

    static {
        Version.checkDuplicate(DubboNamespaceHandler.class);
    }

    public void init() {
        registerBeanDefinitionParser("application", new DubboBeanDefinitionParser(ApplicationConfig.class, true));//应用相关的标签解析
        registerBeanDefinitionParser("module", new DubboBeanDefinitionParser(ModuleConfig.class, true));//模块相关的标签解析
        registerBeanDefinitionParser("registry", new DubboBeanDefinitionParser(RegistryConfig.class, true));//注册器相关的标签解析
        registerBeanDefinitionParser("monitor", new DubboBeanDefinitionParser(MonitorConfig.class, true));//监控器相关的标签解析
        registerBeanDefinitionParser("provider", new DubboBeanDefinitionParser(ProviderConfig.class, true));//服务提供者相关的标签解析
        registerBeanDefinitionParser("consumer", new DubboBeanDefinitionParser(ConsumerConfig.class, true));//服务消费者相关的标签解析
        registerBeanDefinitionParser("protocol", new DubboBeanDefinitionParser(ProtocolConfig.class, true));//协议相关的标签解析
        registerBeanDefinitionParser("service", new DubboBeanDefinitionParser(ServiceBean.class, true));//服务发布相关的标签解析
        registerBeanDefinitionParser("reference", new DubboBeanDefinitionParser(ReferenceBean.class, false));//服务引用相关的标签解析
        registerBeanDefinitionParser("annotation", new AnnotationBeanDefinitionParser());//注解相关的标签解析
    }

}

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

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


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值