加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Dagger:POJO中的场注入

发布时间:2020-12-15 08:50:04 所属栏目:Java 来源:网络整理
导读:我从未尝试过Guide或其他DI库,但尝试使用Dagger from square for Android应用程序.它适用于Frgements,但不适用于POJO. user guide假设有关DI的一些知识,因为它没有更详细地解释.我该怎么做才能将restAdapater注入我的POJO.如果我使用相同的代码进行字段注入,
我从未尝试过Guide或其他DI库,但尝试使用Dagger from square for Android应用程序.它适用于Frgements,但不适用于POJO. user guide假设有关DI的一些知识,因为它没有更详细地解释.我该怎么做才能将restAdapater注入我的POJO.如果我使用相同的代码进行字段注入,它可以在Fragment中使用.

public class MyApplication extends Application {
    private ObjectGraph objectGraph;

    @Override
    public void onCreate() {
        super.onCreate();
        objectGraph = ObjectGraph.create(new DIModule(this));

    }

    public ObjectGraph objectGraph() {
        return objectGraph;
    }

    public void inject(Object object) {
        objectGraph.inject(object);
    }

    ...
    @Module(entryPoints = { 
    MainActivity.class,.....,Auth.class,RestAdapter.class
    })
    static class DIModule {@Provides
        @Singleton
        public RestAdapter provideRestAdapter() {
            return new RestAdapter.Builder().setServer(
                    new Server(Const.BASE_URL)).build();
        }
    }
}

// POJO

public class Auth {

    @Inject
    RestAdapter restAdapater;


    String Username;
    String Password;

    public String authenticate() {
     ...

     Api api = restAdapater.create(..)  // **restAdapater is null**

     }
}

所有碎片都来自下面,DI工作正常.在最近的talk by Eric burke中,他解释说这是必要的,因为Android构造了对象.

public class BaseFragment extends Fragment {
    @Override
    public void onCreate(Bundle state) {
        super.onCreate(state);

        ((MyApplication) getActivity()
                .getApplication())
                .inject(this);
    }

}

解决方法

如果您自己创建一个Auth实例,那么Dagger就不会知道这个实例,也无法为您注入依赖项.

由于您已经在Module entryPoints中声明了Auth.class,因此您只需要向ObjectGraph询问Auth实例:

Auth auth = objectGraph.get(Auth.class);

然后Dagger知道提供Auth实例需要什么,即将它注入RestAdapter.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读