微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

dubbo服务暴露底层源码解析

参考网址:

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里的属性(如id、interface、class等)设置给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调用父类的暴露函数,将服务的相关信息保存在特定对象和发送给注册中心中。

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐