1. 概述
本文接 《API 配置(二)之服务提供者》 ,分享服务消费者相关的配置。
- 红框部分,consumer-side
还是老样子,我们先来看一段 《Dubbo 用户指南 —— API 配置》 ,服务消费者的初始化代码:
// 当前应用配置 ApplicationConfig application = new ApplicationConfig(); application.setName("yyy"); // 连接注册中心配置 RegistryConfig registry = new RegistryConfig(); registry.setAddress("10.20.130.230:9090"); registry.setUsername("aaa"); registry.setPassword("bbb"); // 注意:ReferenceConfig为重对象,内部封装了与注册中心的连接,以及与服务提供方的连接 // 引用远程服务 ReferenceConfig<XxxService> reference = new ReferenceConfig<XxxService>(); // 此实例很重,封装了与注册中心的连接以及与提供者的连接,请自行缓存,否则可能造成内存和连接泄漏 reference.setApplication(application); reference.setRegistry(registry); // 多个注册中心可以用setRegistries() reference.setInterface(XxxService.class); reference.setVersion("1.0.0"); // 和本地bean一样使用xxxService XxxService xxxService = reference.get(); // 注意:此代理对象内部封装了所有通讯细节,对象较重,请缓存复用 |
2. AbstractReferenceConfig
com.alibaba.dubbo.config.AbstractReferenceConfig
,实现 AbstractInterfaceConfig ,抽象引用配置类。
- 具体属性的解释,需要寻找在 《Dubbo 用户指南 —— dubbo:reference》 或 《Dubbo 用户指南 —— dubbo:consumer》 文档。
3. ConsumerConfig
com.alibaba.dubbo.config.ConsumerConfig
,实现 AbstractReferenceConfig ,服务消费者缺省值配置。
- 具体属性的解释,参见 《Dubbo 用户指南 —— dubbo:consumer》 文档。
4. ReferenceConfig
com.alibaba.dubbo.config.ReferenceConfig
,服务消费者引用服务配置类。
- 具体属性的解释,参见 《Dubbo 用户指南 —— dubbo:consumer》 文档。
下面,我们进入正戏。
在文初的 ReferenceConfig 的初始化示例代码中,最后调用的是 ServiceConfig#get()
方法。从方法的命名,我们可以看出,获取引用服务。该方法主要做了如下几件事情: