「Dubbo源码」Spring整合Dubbo

最近在研究dubbo源码,有一点之前没怎么细看,就是Spring怎么整合Dubbo的,还有就是Dubbo是怎么拓展Spring的。正好也好久没更新博客了,水一波博客。

dubbo版本:2.5.3
spring版本:4.3.6.RELEASE

ps:最近回头看以前的博客,感觉代码过多,不大好,以后尝试使用多用文字的形式,少贴代码

本篇研究的问题

  1. Spring是怎么整合Dubbo
  2. Dubbo是怎么拓展Spring的

Spring是怎么整合第三方框架的


大体的解析顺序如上所示。最终调用com.alibaba.dubbo.config.spring.schema.DubboNamespaceHandler#init这个方法,至于Dubbo怎么处理呢,就到下面讲解了。

这里我就讲解下Spring处理META-INF/spring.handlers的
核心呢就是org.springframework.beans.factory.xml.DefaultNamespaceHandlerResolver#getHandlerMappings他会扫描类加载器下所有的META-INF/spring.handlers。但是有一点很坑,idea会自动触发toString方法,而toString方法会调用这个方法,很坑,没法调试。


总之,结果就如截图所示。反正分析了也没人看,就不分析了,贴截图,你们打个断点就知道了。

Dubbo是怎么拓展Spring的

下面开始分析DubboNamespaceHandler#init

这几个魔法字符串是不是很熟悉,就是对应了那几个标签,简单的来说就是告诉spring怎么解析这几个标签。
DubboBeanDefinitionParser呢就不分析了,他里面的parse方法,就是解析那几个标签里面的属性,所有标签共用(eg. reference,method),方法内部没有一个很好的处理,纯靠ifelse来处理(你没看错),核心就是将标签解析成BeanDefinition

之后Dubbo定义的BeanFactoryPostProcessor(我这里是SpringZookeeperRegistryCenter)会将对应的标签通过反射创建,存储到缓存中,这里仅创建,其他什么都没做。

最后在依赖注入的时候调用ReferenceBean#getObject

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值