繁体   English   中英

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

[英]Class instance based on input parameter using Guice binding

我有 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.

我创建了以下客户端规范 static map:“contentType”-> DownstreamClientSpec

"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 动态绑定特定客户端是一种干净的方法吗?

谢谢!

我想, Multibindings ,特别是MapBinder可以用来实现你正在寻找的东西。 将您的客户端绑定到 map,注入它并通过密钥从该 map 获取特定实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM