当前位置: 首页 > 知识库问答 >
问题:

Dagger 2:将模块依赖与另一个模块中的实现分级

章远航
2023-03-14

我正在尝试建立一个项目,其中我有两个模块common-libapp

lib模块有自己的Dagger组件和模块,它应该是不知道味道的。

    @Module
public class NetworkConfigModule {
    @Provides
    @Singleton
    HeaderParams providesHeaderParams(NoOpHeaderParams noOpHeaderParams){
        return noOpHeaderParams;
    }

    @Provides
    @Singleton
    AppHostsProvider providesAppHostsProvider(NoOpAppHostsProvider noOpAppHostsProvider){
        return noOpAppHostsProvider;
    }
}
@Module
public class NetworkConfigModule {

    @Provides
    @ApplicationScope
    HeaderParams providesHeaderParams(KaufdaHeaderParams kaufdaHeaderParams){
        return kaufdaHeaderParams;
    }

    @Provides
    @ApplicationScope
    AppHostsProvider providesAppHostsProvider(KaufdaAppHostsProvider implementation){
        return implementation;
    }
}

共有1个答案

赖淇
2023-03-14

最简单的方法是在app中处理组件创建。

在您的应用程序中,您知道您想要使用的实际模块和类。如果您在那里创建了组件,那么只需向组件添加正确的模块,注入common-lib类并完成即可。

如果您不想在您的应用程序中处理注入,您将需要定义一个接口,例如。

interface NetworkComponentHolder {
    NetworkComponent getNetworkComponent();
}
((NetworkComponentHolder) getApplication()).getNetworkComponent().inject(this);

这将是不使用反射的两种可能性。

 类似资料:
  • Velocity 不依赖 jQuery Velocity.js 可以在不引入 jQuery 的情况下单独使用。如果 你需要大部分动画效果能兼容 IE8,就必须引入 jQuery 1×。 它也可以和 Zepto 一起使用,写法和 jQuery 一样: // 无 jQuery 或 Zepto 时,Velocity()方法挂载在 window 对象上 (window.velocity) // ( 第一

  • 问题内容: 我试图使用Dagger在正在构建的应用程序上进行依赖注入,当我拥有一个程序包的模块(取决于注入器(可能是另一个模块)提供的值)时,在构造适当的DAG时遇到了麻烦。 如果我有一个用于配置变量的简单模块(例如,我可能想换成测试环境) 而另一个模块依赖于它,例如 我尝试在构造函数中引导注入的行失败,并且它抱怨我没有在适当的模块中指定显式行。 通过反复试验,我发现如果在行中添加,这种情况就消失

  • 问题内容: 我有一个简单的节点应用程序,它对github上另一个应用程序具有单一依赖性。使用可以很好地安装依赖项,但是当我尝试在其中安装某些东西时,它说不可用。例如,github应用程序将Mongoose安装为依赖项。我认为该父应用程序可以访问该模块,因为它位于子模块中: 结构看起来像这样: 我是否只需要在父级应用程序中同时包含猫鼬作为依赖项,还是可以通过子级方式访问该模块? 问题答案: 我是否只

  • 我有一个Android Gradle 1.1项目,其中有几个模块对其他模块有一些依赖性。 我的模块本身编译得很好。 我的问题与测试模块有关。(仅供参考:我正在使用Robolectra) 我见过几个与Android构建相关的“类似”问题 Android Gradle 1.1-添加对另一个项目测试的测试依赖性 如何运行依赖于Android库模块的单元测试 Gradle Android单元测试依赖于“a

  • 本文向大家介绍android-gradle 模块依赖,包括了android-gradle 模块依赖的使用技巧和注意事项,需要的朋友参考一下 示例 在多项目中gradle build,您可以与构建中的另一个模块具有依赖关系。 例: 该compile project(':mylibrary')行将名为“ mylibrary”的本地Android库模块声明为依赖项,并要求构建系统在构建应用程序时编译并包

  • 让我们创建一个名为的新模块,并在那里定义CounterService。 app/shared/shared.module.ts 现在我们将引入 SharedModule 到AppModule 和中。 app/lazy/lazy.module.ts 使用此配置,两个模块的组件都可以访问CounterService。 我们将以完全相同的方式在EagerComponent和LazyComponent中使