I have following simple page:
public class Login extends BasePage {
private UserDao userDao;
@Inject
public void setUserDao(UserDao userDao) {
System.out.println("setUserDao");
this.userDao = userDao;
}
Guice initialized with following code in Application:
@Override
protected void init() {
Module myBatisModule = new XMLMyBatisModule() {
@Override
protected void initialize() {
}
};
IbdGuiceModule ibdGuiceModule = new IbdGuiceModule();
getComponentInstantiationListeners().add(new GuiceComponentInjector(this, myBatisModule, ibdGuiceModule));
}
Setter injection doesn’t work. setUserDao method is never called and userDao is null.
If I move @Inject annotation to the field, this works (setUserDao still not called but field value is initialized).
How to use setter injection?
Wicket supports only field injection.
Search in Google “Method injection considered harmful” for details.