我可以使用GIN在GWT的常规类中注入对象吗?

时间:2016-01-13 04:48:01

标签: gwt dependency-injection guice gin

例如,我有GIN模块,其中包含A类的绑定。在B类中(B不使用GIN绑定),我可以简单地使用:

@Inject private A a;

注入A级?我在我的项目中尝试过,看起来我得到了对象a的空指针。不知道为什么。

1 个答案:

答案 0 :(得分:2)

因为您还需要使用GIN实例化B类。

例如,对于@UiFields,您可以使用(提供true)然后将它们注入构造函数中,如下所示:

    /*Class B is not binded by GIN*/
    public class B {
        @Inject
        C cInstance; //C is binded by GIN
    }

/*Class A is binded with GIN*/
    public class A extends ViewImpl{

                @UiField(provided=true)
                B myWidget;

                //and then

                @Inject
                public A (UiBinder binder, B myWidget){
                   this.myWidget = myWidget;  //cInstance inside of it is injected!
                }
        }

在这种B注入之后,B内的所有@Inject注释都应按预期解析。

如果您使用GWT.create / new关键字实例化A,则B实例的myWidget引用也将为null