I'm trying to do field-level injection so I don't have to pass "models" when my controllers are instantiated, like,
UserController controller = new UserController(/*No need to pass models here*/);
However my application throws NullPointerException, here my code:
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);
}
}
What could be the problem?
Use In Guice
UserController controller = injector.getInstance(UserController.class);
Use in Gin:
// Declare a method returning a UserController on your interface extending Ginjector
public UserController getUserController();
// When you need the controller, just call:
injector.getUserController();
to get a fully-injected controller.