问题标签 [dagger-2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 使用 Dagger2 时创建测试依赖项
在阅读 dagger 2 的文档时,我找不到在构建测试应用程序时提供依赖项的简单方法。我发现的唯一线索是:
Dagger 2 不支持覆盖。覆盖简单测试伪造的模块可以创建模块的子类来模拟该行为。应该分解使用覆盖并依赖依赖注入的模块,以便将覆盖的模块表示为两个模块之间的选择。
我不明白如何在 Android 上设置这样的配置,谁能解释一下?
java - 使用 Dagger 2 进行 Android 单元测试
我有一个使用 Dagger 2 进行依赖注入的 Android 应用程序。我还在使用最新的 gradle 构建工具,它允许构建变体用于单元测试和一个用于仪器测试。我java.util.Random
在我的应用程序中使用,我想模拟它进行测试。我正在测试的类不使用任何 Android 的东西,所以它们只是普通的 java 类。
在我的主要代码中,我Component
在扩展类的类中定义了 a Application
,但在单元测试中我没有使用Application
. 我尝试定义一个测试Module
and Component
,但 Dagger 不会生成Component
. 我也尝试过使用Component
我在我的应用程序中定义的并Module
在构建它时交换它,但是应用程序Component
没有inject
我的测试类的方法。如何提供Random
用于测试的模拟实现?
这是一些示例代码:
应用:
模块:
测试的基类:
或者:
测试模块:
android - Dagger 2 基类注入
在 Dagger 1 中,我有一个基类设置,它可以处理创建范围图并将依赖项注入当前对象。例如...
这允许每个子类在标准应用程序模块之外补充他们自己的模块集。
在玩过 Dagger 2 之后,似乎无法处理类似的情况......
我通过修改 MyBaseActivityComponent 来解决上述问题,以便列出它可能使用的所有可能模块......
所以现在我可以做这样的事情......
但是现在我遇到了一个问题,注入将注入 MyBaseActivity 的依赖项,而不是它的子类。建议?
java - 匕首2循环依赖
在我正在处理的一个项目中,我有 2 个高度相互依赖的类:
这个想法是,当执行一项工作时,该工作可以访问多个服务 - 其中一个是执行者本身,因此一个工作将能够执行子工作。
可以看出,这里有一个循环依赖,但我发现它很难打破。
主要问题是 WorkExecutor 在构建图时实际上不需要 ExecutionServices 对象的实例,而只需要稍后使用的提供程序。遗憾的是,Dagger 不知道 WorkExecutor 不会从类的构造函数中调用 ExecutionServices 提供程序,因此它猜测 ExecutionServices 依赖于 WorkExecutor,反之亦然。
我发现的一种可能的解决方案是通过以下方式定义模块和组件:
然后我将原始类修改为:
然后为了创建我的应用程序,我必须这样做:
但我不确定这是正确的做法 - 有没有更好的方法?
android - 如何在方法中注入依赖项?
我是依赖注入的初学者。特别是 Dagger 2。我试图弄清楚我是否/如何做这样的事情:
还是我需要将该依赖项作为类变量放入?对此的任何帮助将不胜感激。同样在这种情况下,变量 someInteger 不是依赖项,而是由调用者添加......这有关系吗?
我可以这样称呼它吗:
android studio 不喜欢上面的调用方法(我假设是因为我做错了什么)
android - Do Dagger 2 and Android Annotations work together?
I've read here that Android Annotations has been updated to work with Dagger (1), but I am not sure if it automatically applies to Dagger 2 as well.
Does anybody use AA and Dagger 2 together?
Thanks.
java - 匕首 2 线程中的 @Singleton 是否安全?
我正在尝试将我的应用程序中的所有内容从单例中移开,因为我已经意识到这是一种糟糕的编程习惯,也就是说,我正在研究实现 Dagger 2 依赖注入。而且我想知道,当您在 Dagger 2 中执行 @Singleton 时,该线程是否已同步?如果不是,我怎么能同步它,所以我不会从多个线程接触相同的东西中得到任何奇怪的数据异常。
当我在做这样的事情之前创建单例时:
就同步而言,Dagger 2 @Singleton 是否等效?
android - Dagger 2 错误:依赖“不能在没有 @Inject 构造函数的情况下提供”,而它实际上是用 @Inject 注释的
我已经开始使用 Dagger 2 并遇到了一个奇怪的问题,这对我来说似乎是一个错误。
我有 3 个模块,它们组成一个子组件,而子组件又扩展/加上更高级别的组件。
子组件非常简单:只是模块和单个注入点的组合:
第一个模块看起来像这样 - 它提供了一般的片段级依赖项:
第二个模块如下所示 - 它为屏幕上的 UI 子集提供演示者/控制器及其依赖项:
第三个模块 - UI 子集的另一个演示者/控制器:
正在注入的片段的相关部分:
NavigationListControllerImpl
实现以下构造函数:
我从 Dagger 2 编译器得到的错误如下:
错误抱怨缺少 @Inject-annotated 构造函数,但它存在!@Provides
如果我用显式(with )替换隐式 NavigationListControllerImpl 实例创建(通过-method 参数传递new
),dagger 开始抱怨相同的错误,但现在是相同模块中的第二个条目的演示者对象,依此类推。
所有这些情况看起来都很奇怪,我想听听更有经验的 Dagger 2 用户(和开发人员?)的一些意见。
先感谢您!
java - 在 Android 上使用 Dagger2 进行依赖注入
目前我不是依赖注入的粉丝,但我想尝试一下。
这就是我所拥有的:
现在我想注入 Facebook 的 CallbackManager。好的,让我们开始吧。
我创建了很多新课程……真的吗?我必须编写更多代码才能让我的开发人员生活更轻松?:-(
有了这个新类,我将 Activity 更改为:
但它不起作用。callbackManager
始终为空。
这有什么问题?
android - Dagger2:使子范围组件可访问父组件依赖项
我有以下设置:
我有以下子范围组件:
问题是PersistenceComponent
具有以下组件作为其依赖项:
哪个使用JobManagerComponent
,哪个是ApplicationComponent的依赖。
不幸的是,这个组件似乎不是继承自ApplicationComponent
. 我需要明确地跟踪这个组件,并像这样为构建器提供它。
并在我构建持久性组件时通过 getter 提供:
我想JobManagerComponent
继承自ApplicationComponent
. 我猜我需要把它变成 a@Subcomponent
并为它提供一个提供方法,但到目前为止,它还没有奏效(我没有得到一个构建器方法,但它仍然看不到jobManager
inside JobManagerComponent
。
这可能@Subcomponent
吗?或者我是否需要跟踪子组件的“子组件”ApplicationComponent
以防子组件依赖它?