我有一个名为“消费者”的界面。
实现如下所示:
public class ConsumerImpl implements Consumer {
DBManager m_dbm ;
@Inject
public ConsumerImpl (DBManager dbm) {
m_dbm = sdbm;
}
}
我需要有2个consumerImpl类的实例,但要注入不同的DBManager实现。如何通过guice配置?
像这样的?
public class GuiceDependencyExample {
static class DBManager {}
static class DBManagerVendor1 extends DBManager {}
static class DBManagerVendor2 extends DBManager {}
static interface Consumer {
DBManager getDbManager();
}
static @Retention(RetentionPolicy.RUNTIME) @BindingAnnotation @interface DBManager1 {}
static @Retention(RetentionPolicy.RUNTIME) @BindingAnnotation @interface DBManager2 {}
static class ConsumerImpl implements Consumer {
DBManager m_dbm;
@Inject
public ConsumerImpl (DBManager dbm) { m_dbm = dbm; }
public DBManager getDbManager() { return m_dbm; }
}
static abstract class ConsumerModule extends PrivateModule {
private final Class<? extends Annotation> annotation;
ConsumerModule(Class<? extends Annotation> annotation) {
this.annotation = annotation;
}
@Override
protected void configure() {
bind(Consumer.class).annotatedWith(annotation).to(ConsumerImpl.class);
expose(Consumer.class).annotatedWith(annotation);
bindDbManager();
}
abstract void bindDbManager();
}
static class Client {
@DBManager1
@Inject
Consumer consumer1;
@DBManager2
@Inject
Consumer consumer2;
}
@Test
public void test() {
Injector i = Guice.createInjector(
new ConsumerModule(DBManager1.class) {
@Override void bindDbManager() {
bind(DBManager.class).toInstance(new DBManagerVendor1());
}
},
new ConsumerModule(DBManager2.class) {
@Override void bindDbManager() {
bind(DBManager.class).toInstance(new DBManagerVendor2());
}
});
Client client = i.getInstance(Client.class);
assertTrue(client.consumer1.getDbManager() instanceof DBManagerVendor1);
assertTrue(client.consumer2.getDbManager() instanceof DBManagerVendor2);
}
基于文档(4.7.6 -了解特定的依赖关系),我们可以通过指定配置本身来了解特定的配置。在示例中,他们将配置< code>compile用作不推荐使用的配置。我试图重现相同的命令,将< code>build.gradle中的< code>compile配置替换为< code>implementation配置(正如我所得到的,我们不应该再使用< code>compile)。但是当我跑的时候: Gra
我的应用程序使用Play-2.4。2/Scala-2.11。6提供了对DI的内置GUI支持 我所有的DAO都将实现绑定到下面的接口,这应该是Guice中最简单的方法 上述实现不需要添加任何模块来提供绑定。 现在由于某种原因,我不想使用@Inject注释将依赖项注入到Books类的构造函数中。所以我试着注射如下 但这给我带来了一个guice配置异常,它说: 现在需要做什么?在这种情况下,我的方法是对
我使用泛型使代码可重用,并利用依赖项注入。 我有两个接口:DataParserImplementation和ObjectImplementation。我有实现每个的类:SalesRepbyId实现DataParserImpl(它将数据解析为对象并将这些对象放入集合)。SalesRep实现Objectimpl(它是特定数据集的对象)。 我试图得到它,这样我就可以选择在我的SalesRepbyId类中
我尝试使用java Spring映射对象DTO到对象正常 我尝试调用接口映射器,因为服务,但我有NullPointerExctive,似乎接口没有注入服务,我使用自动配置,我退出了这个 服务 制图员 错误 我尝试调试,我看到iUserMapper是空的,我不知道如何调用,因为服务 谢谢!
当已知 reflect.Type 时,可以动态地创建这个类型的实例,实例的类型为指针。例如 reflect.Type 的类型为 int 时,创建 int 的指针,即 ,代码如下: 代码输出如下: *int ptr 代码说明如下: 第 13 行,获取变量 a 的反射类型对象。 第 16 行,使用 reflect.New() 函数传入变量 a 的反射类型对象,创建这个类型的实例值,值以 reflect
基于文档(4.7.6-获取对特定依赖关系的洞察),我们可以获取特定配置的洞察,并指定配置本身。在本例中,他们将用作配置,但不推荐使用该配置。我尝试重现相同的命令,在中,将配置替换为配置(据我所知,我们不应该再使用)。但当我跑的时候: 格雷德尔回来了: 我的文件如下: 如果我使用,这是否意味着我无法了解依赖关系,或者是否有其他方法可以获得依赖关系?