最近在研究dubbo源码,有一点之前没怎么细看,就是Spring怎么整合Dubbo的,还有就是Dubbo是怎么拓展Spring的。正好也好久没更新博客了,水一波博客。
dubbo版本:2.5.3
spring版本:4.3.6.RELEASE
ps:最近回头看以前的博客,感觉代码过多,不大好,以后尝试使用多用文字的形式,少贴代码
本篇研究的问题
- Spring是怎么整合Dubbo
- 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。
本文探讨了Spring如何整合Dubbo以及Dubbo如何扩展Spring的内部机制。作者通过分析Spring的namespace handler机制,解释了Spring加载Dubbo配置的过程,并提到DubboBeanDefinitionParser在解析标签和创建BeanDefinition的角色。此外,还提到了Dubbo定义的BeanFactoryPostProcessor在实例化过程中的作用。尽管详细分析并未展开,但文章提供了关键步骤的概述,为读者理解两者之间的交互提供了线索。

3612

被折叠的 条评论
为什么被折叠?



