dubbo使用spring boot配置文件配置的屬性可以參見類DubboConfigConfiguration。
DubboConfigConfiguration有兩個子類:Single和Multiple汁掠。
@EnableConfigurationBeanBindings({
@EnableConfigurationBeanBinding(prefix = "dubbo.application", type = ApplicationConfig.class),
@EnableConfigurationBeanBinding(prefix = "dubbo.module", type = ModuleConfig.class),
@EnableConfigurationBeanBinding(prefix = "dubbo.registry", type = RegistryConfig.class),
@EnableConfigurationBeanBinding(prefix = "dubbo.protocol", type = ProtocolConfig.class),
@EnableConfigurationBeanBinding(prefix = "dubbo.monitor", type = MonitorConfig.class),
@EnableConfigurationBeanBinding(prefix = "dubbo.provider", type = ProviderConfig.class),
@EnableConfigurationBeanBinding(prefix = "dubbo.consumer", type = ConsumerConfig.class),
@EnableConfigurationBeanBinding(prefix = "dubbo.config-center", type = ConfigCenterBean.class),
@EnableConfigurationBeanBinding(prefix = "dubbo.metadata-report", type = MetadataReportConfig.class),
@EnableConfigurationBeanBinding(prefix = "dubbo.metrics", type = MetricsConfig.class),
@EnableConfigurationBeanBinding(prefix = "dubbo.ssl", type = SslConfig.class)
})
public static class Single {}
Single只能解析prefix指定的參數(shù)前綴攒岛,所以像ModuleConfig只能配置一個。
如果需要設(shè)置多個ModuleConfig,那么就要使用Multiple萄喳。我們可以在配置文件指定多個dubbo.modules開頭的配置。
@EnableConfigurationBeanBindings({
@EnableConfigurationBeanBinding(prefix = "dubbo.applications", type = ApplicationConfig.class, multiple = true),
@EnableConfigurationBeanBinding(prefix = "dubbo.modules", type = ModuleConfig.class, multiple = true),
@EnableConfigurationBeanBinding(prefix = "dubbo.registries", type = RegistryConfig.class, multiple = true),
@EnableConfigurationBeanBinding(prefix = "dubbo.protocols", type = ProtocolConfig.class, multiple = true),
@EnableConfigurationBeanBinding(prefix = "dubbo.monitors", type = MonitorConfig.class, multiple = true),
@EnableConfigurationBeanBinding(prefix = "dubbo.providers", type = ProviderConfig.class, multiple = true),
@EnableConfigurationBeanBinding(prefix = "dubbo.consumers", type = ConsumerConfig.class, multiple = true),
@EnableConfigurationBeanBinding(prefix = "dubbo.config-centers", type = ConfigCenterBean.class, multiple = true),
@EnableConfigurationBeanBinding(prefix = "dubbo.metadata-reports", type = MetadataReportConfig.class, multiple = true),
@EnableConfigurationBeanBinding(prefix = "dubbo.metricses", type = MetricsConfig.class, multiple = true)
})
public static class Multiple {}
有一點(diǎn)注意:如果配置多個dubbo.modules蹋半,必須指定id他巨,否則不生效,其他的要配置多個也是這個規(guī)則减江。比如:dubbo.registries.A.address=zookeeper://127.0.0.1:2181
dubbo.registries.B.address=zookeeper://localhost:2181
dubbo.registries.A.id=A
dubbo.registries.B.id=B
在配置文件中配置參數(shù)時染突,以prefix指定的值開頭,后面帶上對應(yīng)的XxxConfig類的屬性名即可辈灼。如果要配置多個份企,prefix指定的值后面需要帶上id值。
Single和Multiple是在DubboConfigConfigurationRegistrar類中注冊到spring容器的巡莹。代碼如下:
boolean multiple = attributes.getBoolean("multiple");
// Single Config Bindings
registerBeans(registry, DubboConfigConfiguration.Single.class);
if (multiple) { // Since 2.6.6 https://github.com/apache/dubbo/issues/3193
registerBeans(registry, DubboConfigConfiguration.Multiple.class);
}
默認(rèn)是引入Multiple類的薪棒,如果增加注解@EnableDubboConfig(multiple=false),那么Multiple類不會注冊到spring容器榕莺,多配置就不會生效俐芯。