dubbo源码分析8——服务暴露概述
2017-09-26 17:51
501 查看
从上文中可知,com.alibaba.dubbo.config.spring.ServiceBean类是负责解析<dubbo:service/>的配置的,下面是它的类图
从类图上可知它继承了ServiceConfig类,并实现了5个接口,在这5个接口中有两个接口与服务暴露有关InitializingBean接口和ApplicationListener接口,其中InitializingBean是进行bean的初始化工作的,ApplicationListener接口是监听spring容器事件的。先通过outline视图观察一下ServiceBean类:
从outline视图中可以发现,ServiceBean类并没做什么保存配置的工作,保存配置的工作主要是由它的父类在承担。结合源码可以看到ServiceBean类的真正作用是两个:
1. 对服务Bean的实例进行初始化,详见afterPropertiesSet()方法
2. 暴露服务,详见onApplicationEvent(ApplicationEvent event)方法,这个方法的触发时机是在spring的IOC容器完成所有的bean的实例化和初始化工作之后,会发出一个ContextRefreshedEvent类型的事件,如果我们关心该类型事件则实现ApplicationListener接口就可以,IOC容器就会在恰当的时机去调用我们实现的ApplicationListener接口中的代码逻辑, 而dubbo就是利用这个机制和时机完成了每个服务接口的暴露工作。
下文将对ServiceBean的源码进行详细分析。
从类图上可知它继承了ServiceConfig类,并实现了5个接口,在这5个接口中有两个接口与服务暴露有关InitializingBean接口和ApplicationListener接口,其中InitializingBean是进行bean的初始化工作的,ApplicationListener接口是监听spring容器事件的。先通过outline视图观察一下ServiceBean类:
从outline视图中可以发现,ServiceBean类并没做什么保存配置的工作,保存配置的工作主要是由它的父类在承担。结合源码可以看到ServiceBean类的真正作用是两个:
1. 对服务Bean的实例进行初始化,详见afterPropertiesSet()方法
2. 暴露服务,详见onApplicationEvent(ApplicationEvent event)方法,这个方法的触发时机是在spring的IOC容器完成所有的bean的实例化和初始化工作之后,会发出一个ContextRefreshedEvent类型的事件,如果我们关心该类型事件则实现ApplicationListener接口就可以,IOC容器就会在恰当的时机去调用我们实现的ApplicationListener接口中的代码逻辑, 而dubbo就是利用这个机制和时机完成了每个服务接口的暴露工作。
下文将对ServiceBean的源码进行详细分析。
相关文章推荐
- 6、dubbo源码分析 之 服务暴露概述
- dubbo源码分析10——服务暴露1_export()方法分析
- Dubbo源码分析之服务暴露
- dubbo服务暴露过程源码分析
- 7、dubbo源码分析 之 服务本地暴露
- 8、dubbo源码分析 之 服务远程暴露(上)
- Dubbo暴露服务和引用服务的实现源码分析
- dubbo源码分析12——服务暴露3_doExportUrls()方法分析
- Dubbo源码分析之三:服务的暴露
- dubbo源码分析(一) 服务暴露--服务引用
- Dubbo源码分析----暴露服务
- [置顶] Dubbo暴露服务和引用服务的实现源码分析
- Dubbo源码解析 —— 服务暴露总结
- Dubbo源码解析 —— 服务暴露总结
- Dubbo源码分析之四:服务的调用
- Dubbo源码解析 —— 服务暴露总结
- Dubbo 介绍 2- 源码分析,通过 schema 启动服务
- Dubbo源码解析 —— 服务暴露总结
- Dubbo源码解析 —— 服务暴露总结
- Dubbo源码分析(1),Dubbo源码的结构概述