我有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();
}
我有另一个spec builder方法:
ModelClientSpec<DownstreamService1Client> spec = ModelClientSpec.builder(DownstreamService1Client.class);
以上规范可用于创建客户端:
DownstreamService1Client client = context.getResourceClient(spec);
可用于调用下游客户端获取数据:
ContentData data = client.getContentData(); // get the data from downstream service.
我创建了以下客户端规范静态映射:“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
可以用来实现您所要的目标。将您的客户端绑定到一个映射,注入它并通过键从该映射获取特定的实现。
我试着写一个小函数,它接受两个列表,并根据另一个列表的元素对一个进行排序。所以类似于: 将产生一个排序列表。 然而,可能是一个不同的列表,比如整数、浮点数或其他列表。理想情况下,我希望我的程序能够获取我抛出的任何列表,根据
我正在开发一个基于JAX-RS的Java应用程序,使用Google Guice进行依赖注入。我的代码中有以下接口: 在上面的接口中,Lock是一个定义如下的接口: 锁接口由以下类实现: LockProvider接口由以下类实现: 除了LockProvider之外,我不希望应用程序中的类知道底层锁项,这就是为什么我没有在lock接口中包含getUnderlyingLockItem。 现在,当我尝试将
问题内容: 标准对象工厂可能如下所示: 是否可以设置绑定以便为我完成切换,即我要做的就是调用getInstance或inject?我当时在看辅助注射,但这似乎是另外一个话题:https : //code.google.com/p/google- guice/wiki/AssistedInject 问题答案: 听起来您正在寻找,这是多重绑定功能的一部分。请注意,您仍然需要放入某种工厂接口或其他工厂接
问题内容: 我正在尝试使函数采用可扩展的多个类之一,并在其Class中返回该对象的新实例,而不是的新实例。 我确定这是一个常见问题。有没有好的例子? 我从未使用过一个类作为输入参数,只使用了一个类的成员。根据我的搜索,这应该可行吗? 问题答案: 您是将对象作为参数传递还是作为的子类传递? 在这两种情况下,解决方案都几乎相同,您可以在Class对象上使用newInstance方法。 如果需要构造函数
我有一组验证器类,它们都扩展了一个公共抽象类,它们都具有相同的构造函数 我想要Guice的能力 < li >知道如何构造所有这些验证器,将相同的数据源注入所有这些验证器中 < li >使用多绑定器将所有验证器注入到一个类中 通过一些谷歌搜索,看起来我可以使用,但问题是如果我想这样做,我必须为每个验证器创建一个工厂,这是一个巨大的样板。因为他们都有相同的构造函数,我觉得一定有更好的方法。我的对象是在
我正在努力实现DI,特别是使用guice的构造函数注入。我很难理解如何将泛型的类类型注入到构造函数中。 我的课程如下: 我可以在运行时使用guice将类的类型注入构造函数吗?简而言之,我可以使用guice注入Foo构造函数吗?