0

次の簡単なページがあります。

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 はまだ呼び出されていませんが、フィールド値は初期化されています)。

セッターインジェクションの使い方

4

1 に答える 1