首页 > 其他 > 详细

dubbo服务暴露底层源码解析

时间:2020-11-08 17:09:50      阅读:24      评论:0      收藏:0      [点我收藏+]

参考网址:

https://blog.csdn.net/peace_hehe/article/details/79288053

https://blog.csdn.net/aoomiao/article/details/83503223

springboot结合dubbo中要将服务进行暴露的话得先解析提供者的xml配置,至于springboot项目在启动时指定读取解析xml不在本文说明范围内

com.alibaba.dubbo.config.spring.schema.DubboNamespaceHandler中指定解析器,在解析到dubbo标签时就会去调用该解析器将每个暴露服务的配置组装成bean对象

 技术分享图片

具体的解析过程方法在,把传进来的标签element里的属性(idinterfaceclass)设置给beanDefinition ,根据beanClass(ServiceBean)获取set方法放进beanDefinition记录着

com.alibaba.dubbo.config.spring.schema.DubboBeanDefinitionParser#parse()

 技术分享图片

这里beanDefinition的定义是记录着需要实例化bean的各种信息,相当于模子,有了模子就可以实例化相应的bean出来,返回的beanDefinition最终会放到spring一个beanDefinitionMap<String, BeanDefinition>中,其中key为xml定义的id

org.springframework.beans.factory.support.DefaultListableBeanFactory

当初次调用容器的getBean(beanName)时就会通过beanDefinitionMap获取BeanDefinition去实例化bean在这里将会去实例化ServiceBean实例,而ServiceBean类作为监听器实现了

ApplicationListener<ContextRefreshedEvent>接口,在容器启动触发事件调用监听器的执行方法。由于ServiceBean也继承了ServiceConfig,调用了父类的暴露函数,将服务的相关信息保存在特定对象和发送给注册中心中。

技术分享图片

 

dubbo服务暴露底层源码解析

原文:https://www.cnblogs.com/qizhufeitian/p/13943951.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!