使用Guice绑定基于输入参数的类实例



我有Java接口类。

public interface ModelClient {
}
public interface DownstreamService1Client extends ModelClient {
public ContentData getContentData();
}
public interface DownstreamService2Client extends ModelClient {
public ContentData getContentData();
}
public interface DownstreamService3Client extends ModelClient {
public ContentData getContentData();
}

我有另一种规范构建方法:

ModelClientSpec<DownstreamService1Client> spec = ModelClientSpec.builder(DownstreamService1Client.class);

以上规范可用于创建客户端:

DownstreamService1Client client = context.getResourceClient(spec);

可用于调用下游客户端获取数据:

ContentData data = client.getContentData(); // get the data from downstream service.

我创建了以下客户端规范静态映射:"contentType"->下游客户端规范

"music" -> DownstreamClient1Spec
"books" -> DownstreamClient2Spec
...

现在我有了一个处理方法:

public ContentData handle(String contentType) {
// need to get a client based on contentType
client = ???
return  client.getContentData()
}

除了具有contentType的switch语句和特定的客户端创建逻辑之外,我如何基于contentType获得客户端?使用Guice动态绑定特定客户端是一种干净的方法吗?

谢谢!

我想,可以使用多绑定,特别是MapBinder来实现您想要的功能。将您的客户端绑定到映射,注入它,然后通过键从该映射中获取特定的实现。

相关内容

  • 没有找到相关文章

最新更新