次の簡単なページがあります。
public class Login extends BasePage {
private UserDao userDao;
@Inject
public void setUserDao(UserDao userDao) {
System.out.println("setUserDao");
this.userDao = userDao;
}
アプリケーションで次のコードで初期化された Guice:
@Override
protected void init() {
Module myBatisModule = new XMLMyBatisModule() {
@Override
protected void initialize() {
}
};
IbdGuiceModule ibdGuiceModule = new IbdGuiceModule();
getComponentInstantiationListeners().add(new GuiceComponentInjector(this, myBatisModule, ibdGuiceModule));
}
セッター注入が機能しません。setUserDao メソッドは呼び出されず、userDao は null です。
@Inject アノテーションをフィールドに移動すると、これが機能します (setUserDao はまだ呼び出されていませんが、フィールド値は初期化されています)。
セッターインジェクションの使い方