GWT google-gin字段注入不起作用

时间:2014-09-25 11:49:42

标签: java gwt guice

我正在尝试使用google-gin进行字段注入,但是当我调用TestClass.test()时,注入的字段为null。我究竟做错了什么?根据文档字段注入应该是非常直接的。 ContextModule类中有什么我缺少的吗?

public class MainEntry implements EntryPoint {
    private final ContextInjector injector = GWT.create(ContextInjector.class);
    @Override
    public void onModuleLoad() {
        injector.getAppMain();
    }
}

@GinModules(ContextModule.class)
public interface ContextInjector extends Ginjector {
    AppMain getAppMain();
}

public class MyLogger {
}

public class ContextModule extends AbstractGinModule {
    @Override
    protected void configure() {
        bind(MyLogger.class).in(Singleton.class);
    }
}

public class AppMain {
    @Inject
    AppMain(MyLogger logger) {
        // logger is injected properly here
        new TestClass().test();
    }
}

public class TestClass {
    @Inject
    private MyLogger logger;

    public void test() {
        // logger is null here!
    }
}

1 个答案:

答案 0 :(得分:2)

您的TestClass不受GIN管理,因此GIN不会在其中注入任何内容。您必须让GIN实例化TestClass(例如,在MyLogger构造函数中将TestClass更改为AppMain,并在给定实例上调用test(),或者询问GIN注入现有TestClass个实例的成员(向Ginjector添加一个以TestClass为参数的方法,在调用时,它会注入字段和方法传入的实例)。