【发布时间】:2016-02-26 03:09:06
【问题描述】:
class A {
public A() {
}
}
class B {
@Inject
@Named("A")
private A a;
public B() {
}
public A getA() {
return a;
}
}
class AModule extends AbstractModule {
@Override
protected void configure() {
}
@Provides
@Singleton
@Named("A")
public A providesA() {
return new A();
}
}
我们这样做:
AModule module = new AModule();
Injector injector = Guice.createInjector(module);
B b = injector.getInstance(B.class);
System.out.println(sample.getA());
但是我们有很多依赖 A 的类,我们不想每次创建实例时都添加这段代码。
那么,有没有办法在创建 B 的实例时自动注入 A 的实例?
【问题讨论】:
-
我想避免这样的代码:
AModule module = new AModule(); Injector injector = Guice.createInjector(module); B b = injector.getInstance(B.class);如果我可以使用自动注入创建 B 的实例,那就太好了。 -
这就是我的问题。有什么办法吗?
-
我的理想代码是:
AModule module = new AModule(); Injector injector = Guice.createInjector(module); injector.injectNamedSomething();,然后B b = new B(); b.getA();,因为我已经使用了命名注入器。 -
我的实例创建者代码不应该担心注入器,因为我已经定义了一次。
-
在您的示例代码中,
A将“自动注入”,因为它有一个零参数构造函数。您能否提供有关您所面临的确切问题的更多详细信息?
标签: java dependency-injection guice