adg*_*gfs 1 java gwt gwt-gin dependency-injection
我试过这样的事情:
@Singleton
public class AAA implements EntryPoint, HistoryListener
{
private BBB bbb;
private CCC ccc;
private DDD ddd;
private EEE eee;
@Inject
public AAA(BBB bbb, CCC ccc, DDD ddd, EEE eee)
{
this.bbb = bbb;
this.ccc = ccc;
this.ddd = ddd;
this.eee = ee;
}
.........
}
Run Code Online (Sandbox Code Playgroud)
结果对所有实例都为null ..我希望这种方式工作......
我知道我可以做这样的事情
private final MyGinjector injector = GWT.create(MyGinjector.class);
injector.getAAA()
and so on..
Run Code Online (Sandbox Code Playgroud)
为什么我尝试的第一种方式对我不起作用?有什么建议?
谢谢
您可以使用injectMembers
Guice 的功能,在GIN中通过在Ginjector中声明一个方法来获取单个参数来完成.
@GinModules(...)
interface MyGinjector extends Ginjector {
public void injectEntryPoint(AAA entryPoint);
...
}
public class AAA implements EntryPoint {
@Inject private BBB bbb; // field injection works
private CCC ccc;
@Inject void setCcc(CCC ccc) { this.ccc = ccc; } // and of course method injection
public onModuleLoad() {
MyGinjector injector = GWT.create(MyGinjector.class);
injector.injectEntryPoint(this);
...
}
}
Run Code Online (Sandbox Code Playgroud)
顺便说一下,你不需要用以下内容注释你的EntryPoint @Singleton
:除非你把它注入另一个类(并且你不得不求助于hacks将它绑定到GWT创建的实例,而不是GIN创建自己的实例),你应用程序中只有一个EntryPoint实例.