我想做字段級注入,所以我沒有當我的控制器被實例化,如通過「模型」,現場級注射杜松子酒
UserController controller = new UserController(/*No need to pass models here*/);
但是我的應用程序將引發NullPointerException異常,在這裏我的代碼:
UserController.java
public class UserController implements Controller {
@Inject private UserModel model;
public UserController() {
model.doSomething(); // NullPointerException
}
}
ClientGinModule.java
public class ClientGinModule extends AbstractGinModule {
@Override
protected void configure() {
bind(UserModel.class).in(Singleton.class);
}
}
可能是什麼問題?
你確定你正在注射你的代孕嗎?如果你使用新的UserController(),那麼這就是你的問題,你應該使用'injector.getInstance(UserController.class);'。 –
我明白了,所以野外注射可以嗎?我的意思是,如果我使用getInstance方法,UserModel不會爲空? – xybrek
是的,使用getInstance(UserController.class)將注入所有可注入的字段。請注意,在構造函數中,這些字段還沒有被注入,但是在它們之後。如果你需要在構造函數中的一些值,唯一的方法是添加這些作爲您的構造函數的注入參數 –