标签:service factory 基于 源码解析 actor art pac meta 操作
基于 dubbo.jar 内的 META-INF/spring.handlers
配置,Spring 在遇到 dubbo 名称空间时,会回调 DubboNamespaceHandler
。
所有 dubbo 的标签,都统一用 DubboBeanDefinitionParser
进行解析,基于一对一属性映射,将 XML 标签解析为 Bean 对象。
在 ServiceConfig.export()
或 ReferenceConfig.get()
初始化时,将 Bean 对象转换 URL 格式,所有 Bean 属性转成 URL 的参数。
然后将 URL 传给协议扩展点,基于扩展点的扩展点自适应机制(Dubbo SPI),根据 URL 的协议头,进行不同协议的服务暴露或引用。
spring 扫描所有 jar 下 META-INF/spring.handlers
和 META-INF/spring.schemas
运行dubbo.jar/META-INF/spring.handlers
下定义的DubboNamespaceHandler
的 init() 方法
spring 加载 xml,执行 DubboBeanDefinitionParser
的 parse() 方法,通过RootBeanDefinition将serviceBean 暴露给 spring。(实际调用AutowireCapableBeanFactory.registerBeanDefinition)
ServiceBean 实现了 ApplicationListener<ContextRefreshedEvent>
,Spring 容器 refresh() 之后,发送 Event 事件,然后 ServiceBean 做服务暴露操作。(服务暴露)
ReferenceBean 实现了 InitializingBean,在 Bean 实例化过程中会调用 afterPropertiesSet(),然后 ReferenceBean 做服务引用操作。(服务引用)
其中比较重要的是 ServiceBean 和 ReferenceBean。
标签:service factory 基于 源码解析 actor art pac meta 操作
原文地址:https://www.cnblogs.com/kevin-yuan/p/10346574.html