我正在尝试进行字段级注入,因此当我的控制器实例化时,我不必传递"模型",例如,
UserController controller = new UserController(/*No need to pass models here*/);
但是我的应用程序抛出 NullPointerException,这是我的代码:
用户控制器.java
public class UserController implements Controller {
@Inject private UserModel model;
public UserController() {
model.doSomething(); // NullPointerException
}
}
客户端金模块.java
public class ClientGinModule extends AbstractGinModule {
@Override
protected void configure() {
bind(UserModel.class).in(Singleton.class);
}
}
可能是什么问题?
在 Guice 中使用
UserController controller = injector.getInstance(UserController.class);
在杜松子酒中使用:
// Declare a method returning a UserController on your interface extending Ginjector
public UserController getUserController();
// When you need the controller, just call:
injector.getUserController();
以获得完全注入的控制器。
当构造函数仍在运行时,您的model
字段将为 null。它将在完全创建对象后由 GIN 注入UserController
。在这里 GWT GIN 场级注入,您可以找到有关它的很好的解释。