Dagger 2的依赖注入

斯图斯特林

我正在尝试与另一个项目一起创建一个Android库,同时使用Dagger 2学习DI。事实证明,这比预期的要困难得多。

我的问题

我正在尝试使用一个单例类MySingleton该类我想从我的Android库和主应用程序中访问。

当前设置

基本上MySingleton,我的Android库项目中有一个单例类在项目中,我有一个名为的类SingletonModule,它是一个Dagger2模块,可以像这样提供我的单身人士。

@Provides @Singleton
MySingleton providesMySingleton() {
    return new MySingleton();
}

好的,现在在我的实际应用程序中,我具有以下组件。

@Singleton
@Component(modules = {SingletonModule.class})
public interface ApplicationComponent {
    void inject( MyApplication application );
}

因此,这是用于注入MySingletonMyApplication类。它是这样做的。

this.applicationComponent = DaggerApplicationComponent.builder()
            .singletonModule( new SingletonModule() ) // does it for you as empty constructor
            .build();
    applicationComponent.inject(this);

这很棒MySingleton,我按领域注入的实例运行良好。

我尝试过的

在我的Android库项目中,我创建了一个名为的新组件SingletonComponent,与ApplicationComponent提供MySingleton对象相同。然后在MyService扩展类中,Service我按字段注入了MySingleton对象。这没有我追求的效果。它确实对象化了一个MySingleton对象,但是它与注入到我的实际应用程序中时创建的实例不同。我相信这是因为它是我正在创建的新组件...

我在这里做错了什么?

我浏览了许多不同的站点并遵循了许多教程,但是这种依赖注入并没有带来什么好处。

奥尼扬

我相信这是因为它是我正在创建的新组件...

你是绝对正确的。每个依赖图的单例是唯一的。创建第二个组件时,您实际上是在创建第二个依赖关系图,该图具有针对该单例的不同对象。

有两种解决方案:

  1. 在您的应用中仅创建一个包含lib模块的图形
  2. 在您的lib中创建一个图,然后向其中添加您的应用模块(例如:https : //github.com/google/dagger/tree/master/examples/android-activity-graphs(它们正在添加“每个活动”模块,但您会明白的)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Dagger 2注入依赖链

来自分类Dev

使用Dagger 2查看依赖项注入

来自分类Dev

Dagger 2依赖关系是否可以注入?

来自分类Dev

Android Dagger2 依赖注入

来自分类Dev

Dagger 2 和依赖注入地狱?

来自分类Dev

依赖组件的 Dagger 注入

来自分类Dev

如何使用Dagger 2注入pojo依赖项?

来自分类Dev

使用Dagger2进行内部依赖注入

来自分类Dev

使用dagger2进行依赖项注入时是否可以只注入超类?

来自分类Dev

构造函数注入Dagger 2

来自分类Dev

Dagger 2演示者注入

来自分类Dev

Android Dagger 2:注入与提供

来自分类Dev

构造函数注入Dagger 2

来自分类Dev

用于依赖注入的Google App引擎Dagger Bootstrap注入

来自分类Dev

用于依赖注入的Google App引擎Dagger Bootstrap注入

来自分类Dev

如何在Android中使用Dagger2依赖注入和Robolectric进行测试?

来自分类Dev

如何使用Dagger2将依赖项注入任何类型的对象中?

来自分类Dev

无法在Java中的Android使用dagger2注入的片段依赖

来自分类Dev

Dagger2 从两个不同的类注入依赖项的最佳方式

来自分类Dev

基于构建类型和风格的更好的Dagger依赖注入?

来自分类Dev

使用Dagger将依赖项注入Singleton吗?

来自分类Dev

Dagger在注入嵌套依赖项时抛出IllegalStateException

来自分类Dev

Dagger在注入嵌套依赖项时抛出IllegalStateException

来自分类Dev

sublclass 的 Dagger 注入

来自分类Dev

未注入 Dagger 的字段

来自分类Dev

Android Dagger 2 POJO字段注入null

来自分类Dev

如何使用Dagger 2注入Servlet?

来自分类Dev

使用Dagger 2进行方法注入

来自分类Dev

无法使用Dagger 2注入课程