dubbo调用(API方式)如何缓存ServiceConfig对象?

dubbo官方文档中,API方式调用代码示例如下:

...以上有服务提供者协议配置代码,此处省略

// 服务提供者暴露服务配置
ServiceConfig<XxxService> service = new ServiceConfig<XxxService>(); // 此实例很重,封装了与注册中心的连接,请自行缓存,否则可能造成内存和连接泄漏
service.setApplication(application);
service.setRegistry(registry); // 多个注册中心可以用setRegistries()
service.setProtocol(protocol); // 多个协议可以用setProtocols()
service.setInterface(XxxService.class);
service.setRef(xxxService);
service.setVersion("1.0.0");

// 暴露及注册服务
service.export();

这里的自行缓存应该怎么做呢?
我们会有很多接口需要暴露为服务,每个服务要初始化一个ServiceConfig对象吗?看这个写法是要的(接口作为ServiceConfig的参数?),那怎么缓存呢?
请指教!谢谢!

可以用一个单例模式的对象,保存new创建的serviceconfig

class Singleton
{
private static ServiceConfig<XxxService> service = new ServiceConfig<XxxService>();
private Singleton() { }
public static ServiceConfig<XxxService> GetServiceConfig() { return service; }
}

谢谢!,但还是不明白:API方式在启动时扫描需要暴露的服务接口,每个服务接口创建一个ServiceConfig,然后就service.export()注册到注册中心,就能够被消费了,别的地方也没有再创建ServiceConfig的地方了,为什么要缓存呢?

同样,还有ReferenceConfig的缓存,启动时扫描要引用的服务接口,每个引用创建一个ReferenceConfig,然后referenceConfig.get()作为一个bean注入到这个类里,就可以调用服务了,为什么要缓存呢?哦,是指还有别的地方引用吗?这种情况确实可以缓存一下,所有引用服务的地方都注入同一个对象,那是不是应该缓存referenceConfig.get()而不是referenceConfig呢?

@Controller
public class DepartmentController {
	//自定义注解,扫描注入dubbo服务引用
	@AutowireDubbo
    private UserService userService;
	//本地服务
	@Autowired
    private DepartmentService departmentService;
	@ResponseBody
	@RequestMapping(value = "/department",method = RequestMethod.POST)
	public RestResult add(@Valid @RequestBody Department department) {
		Department restResult = departmentService.addDepartment(department);
		//调用dubbo服务获取用户
		restResult.setUserList(userService.getList(restResult.getDepartmentId());
		return restResult;
	}
}

这是实际调用的代码,userService是注入的referenceConfig.get()