1、【Dubbo3.1.1源码】Dubbo怎么将我们服务注册到spring容器的?

本文探讨Dubbo 3.1.1版本中,服务如何通过`@DubboComponentScan`注解注册到Spring容器。讲解了`DubboComponentScan`、`ServiceBean`和`ServiceConfig`的角色,以及Spring如何通过bean工厂处理器注册bean。
摘要由CSDN通过智能技术生成

1、Dubbo怎么将我们服务注册到spring容器的?

  之前一直不喜欢写博客,主要是因为自己文笔不好,现在大家都很卷,我也准备开始写一写博客,卷一下。哪就从最近在看的dubbo源码开始吧。这里是我看代码的一些理解,不代表官方解读哦。如果有写的不好,难以理解的地方,欢迎大家留言。我会改进,希望大家一起越来越好吧。

  本次分享的dubbo版本是3.1.1 ,小伙伴们可以在这里拉取代码https://github.com/apache/dubbo

  那么我们就从启动dubbo服务开始吧,代码获取到之后,dubbo提供了demo,先看org.apache.dubbo.demo.provider.Application 启动一个dubbo服务,只需要在加上@EnableDubbo注解即可,是不是很方便。那么我们先来看看EnableDubbo注解吧
在这里插入图片描述
EnableDubbo包含了2个注解@EnableDubboConfig和@DubboComponentScan,本章主要介绍服务如何解析到容器中的,因此我们先来看看DubboComponentScan注解。
在这里插入图片描述
这里的@Import是spring的注解,许多的框架都是通过这种方式向spring容器注册bean的,不了解的小伙伴可以搜索相关内容,后面写完dubbo,我看看也写一些spring的内容,这里就不多说了。重点还是回来看看import里的类。即DubboComponentScanRegistrarDubboComponentScanRegistrar实现了 ImportBeanDefinitionRegistrar接口。这在spring执行bean工厂的处理器的时候会调用到loadBeanDefinitionsFromRegistrars方法 ,从而执行到registerBeanDefinitions方法。

@Override
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
   
    // 初始化dubbo上下文,reference注解处理器,各种监听
    DubboSpringInitializer.initialize(registry);
    //获取扫描包路径
    Set<String> packagesToScan = getPackagesToScan(importingClassMetadata);
    //注册dubboservice的注解处理器
    registerServiceAnnotationPostProcessor(packagesToScan, registry);
}

本章节主要说说服务怎么注册到spring的,那么我们先忽略DubboSpringInitializer.initialize,看看dubboservice注解处理器。registerServiceAnnotationPostProcessor方法其实很简单,就是向容器中注册了ServiceAnnotationPostProcessor这个bean就完成了。

先来看看这个关系图,我删除了部分本次无关的内容。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值