Skip to content

Dubbo与Spring整合源码解析

315字约1分钟

2025-01-12

Dubbo是一个RPC框架,通常需要结合Spring进行使用。本文将说明Dubbo如何利用Spring扩展点与Dubbo进行整合。

整合入口

Dubbo提供了@EnableDubbo注解用于快速在Spring项目中与Dubbo进行整合。@EnableDubbo内部包括两个注解:@EnableDubboConfig@DubboComponentScan,其作用分别为生成Dubbo配置类Dubbo Bean扫描

1. 生成Dubbo配置类

@EnableDubboConfig注解通过@Import注解属性值DubboConfigConfigurationRegistrar引入DubboConfigConfiguration.SingleDubboConfigConfiguration.Multiple配置类Bean,默认情况下,因@EnableDubbo的value属性值为true,支持在配置文件中声明同一类型的多个配置属性。例如:

# 支持Dubbo协议
dubbo.protocols.p1.id = dubbo
dubbo.protocols.p2.name = dubbo
dubbo.protocols.p1.port = 20880

# 支持rest协议
dubbo.protocols.p1.id = rest
dubbo.protocols.p2.name = rest
dubbo.protocols.p1.port = 20881

如果配置@EnableDubbo#value为false,仅允许支持单个配置

dubbo.protocol.name = dubbo
dubbo.protocol.port = 20880

DubboConfigConfiguration.SingleDubboConfigConfiguration.Multiple都被EnableConfigurationBeanBindings注解,每个属性值表示一类配置,例如:

@EnableConfigurationBeanBinding(prefix = "dubbo.applications", type = ApplicationConfig.class, multiple = true)

提示

此配置仅在multipe属性为true时生效。

EnableConfigurationBeanBindings通过ConfigurationBeanBindingsRegister进行解析。对于注解内部的单个EnableConfigurationBeanBinding,都会生成一个配置Bean对应Dubbo中10种全局配置类。

Dubbo Bean扫描

服务导入

服务导出