问题标签 [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.

0 投票
2 回答
194 浏览

java - 如何注入单例?

我正在制作一个快速示例以适应 Dagger2,但我一度陷入困境。我有一个班级,我想成为一个单身人士,但 Dagger2 不断给我不同的对象。

这是我的源代码:

单例类

单例组件

单例模块

主要的

但是我将不同的对象记录到标准输出中。任何想法为什么?

0 投票
1 回答
840 浏览

java - Libgdx 和 Dagger 2 - 不生成代码

我正在移植我的 libgdx 游戏以通过 Gradle 2 支持依赖注入。

我遇到的问题是匕首似乎没有为我的组件生成代码。我相信问题在于 libgdx 处理它的 gradle 文件的方式以及它如何将它们拆分为不同的操作系统。

我的整个(非常不完整的)项目可以在这里找到,但我将发布仅针对 android 的项目的代码。

我的整个项目的 build.gradle:

我的 android 模块的 build.gradle:

我的核心模块的 build.gradle:

我的模块类 AssetLoaderModule.java:

我的组件 AssetLoaderComponent.java

最后,以及我尝试创建 AssetLoader 对象的实例:

问题发生在DaggerAssetLoaderComponent.create()编译器无法识别符号并因此生成代码的行上。

我试过的:

  • 清洁/建造/组装项目
  • 将依赖项/插件添加到 android 模块本身
  • 检查项目文件以查看代码是否存在但只是隐藏(它不存在)
  • 我在一个非 libgdx 项目中设置了 dagger 并让它工作得很好
  • 我尝试使用 glassfish 注释和 jrs250 注释
  • 我尝试通过使用安装文件生成仅适用于 android 的项目,将项目限制为仅适用于 android。(但 github 链接包含的代码不仅仅适用于 android 操作系统)

在这一点上,我认为我如何将不同的文件添加到各种 build.gradle 文件只是一件愚蠢的事情。如果您需要更多信息,请在下面发表评论。

0 投票
1 回答
2850 浏览

dependency-injection - Dagger 2.0 构造函数注入和单例

是否可以一次使用 Dagger 2.0 构造函数注入和单例。我在文档中找不到答案。

例子:

构造函数注入确实有效。但是,如果我在班级上写@Singleton,是否可以保证 MyClass 被创建为单例?

谢谢

0 投票
1 回答
260 浏览

java - 了解dagger2的用法

我下载了Coffee 示例应用程序并将其带入我的 IDE。运行后mvn clean,我的 IDE 报告编译错误为:

在此处输入图像描述

在我运行之前它不会得到修复mvn compile。显然,示例代码是指由该工具生成的某个类。

我对这种设计感到非常惊讶,因为在你编译项目之前,你不会有一个准备好编译的项目(看起来),有点像你必须吃自己的鸡蛋才能出生。

问:这是dagger2的正常使用场景吗?还是我错过了什么?

0 投票
1 回答
31 浏览

dependency-injection - 我们如何才能从我的项目中的这么多模块创建注入对象?

假设我在 OpenGraph 中有 3 个模型。即例如

直到现在似乎还可以。但我有一个名为

这里我没有在@Injection 中指定任何模块。但是 Log 对象将在类中创建。我知道这个日志对象将从那个 moduleA 模块创建,例如注入 {@moduleA}。它如何在不指定任何模块的情况下创建日志模块。

我的理解或编码有任何问题,请建议我。提前谢谢。

0 投票
1 回答
601 浏览

android - 使用 multidex 和 Dagger 2 时,Application 对象中缺少函数

我们最近在使用 Multidexing 时遇到了问题,特别是在使用 gradle multidex 插件 ('com.android.support:multidex:1.0.0') 为 Dalvik VM 构建时。

似乎 gradle 难以解析应该包含在主 dex 文件中的正确类。结果,我们最终得到了一个成功完成的构建过程,但有时会生成一个主 dex 文件,其中不包含正确实例化主应用程序所需的一个或多个类(它本身扩展了 MultiDexApplication)。

我们当前蛮力一致构建的解决方案是监控由 multidex 生成的中间文件。当我们有一个好的构建(即正确实例化主应用程序和 MultiDexApplication 的构建),然后将包含在主 dex 文件中的类列表复制到一个文件中,然后我们强制使用 multidex(使用 --main -dex-list 参数)。这暂时使我们能够将所需的类“强制”到主 dex 文件中,但显然不是很可维护,并且在添加新类/依赖项时无法轻松更新。

我们正在使用 Dagger 2 进行依赖注入,我们怀疑这会以某种方式阻止 multidex 插件正确识别主 App 的依赖项——这可能是原因吗?我们还遇到了各种关于使用最小的“App Wrapper”(其本身扩展 MultiDexApplication)作为多索引处理的“入口点”的参考,但找不到足够的文档来说明该过程。

如果您能对此提供一些见解,那就太好了 - 这是您以前遇到过的问题吗?有已知的解决方法吗?您可以提供的有关我们如何实现“应用程序包装器”模式的任何详细信息也将不胜感激

0 投票
5 回答
5557 浏览

java - 具有多个依赖项的 Dagger2 组件

这是我目前拥有的,并且有效:

现在我想添加另一个依赖项。我把它改成这样:

但现在我收到此错误消息:

FragmentFacebookLoginComponent 依赖于多个作用域组件

我该如何解决这个问题?我怎样才能拥有多个依赖项?

如果我从一个组件中删除范围,我会收到以下错误消息:

AnotherComponent (unscoped) 不能依赖于作用域组件

0 投票
1 回答
1007 浏览

logging - Dagger:注入命名记录器?

我有某种分析包装器,我必须为每个类创建一个实例,如下所示:

这样构建的对象就可以使用类名来编写更好的事件。

但是为每个类创建这样的对象非常烦人(并且容易出错),所以我考虑为此使用 Dagger(或 Dagger2)。

有没有办法可以将当前类注入到已经注入的对象中?更好的是,注入命名记录器的好方法是什么?

0 投票
1 回答
9192 浏览

java - Dagger 2 组件依赖

是否可以在模块中注入一些东西?

我有 2 个基本模块/组件:

有了这个模块/组件,我想创建第三个模块:

但是mHttpClientmGson没有注入。是否可以在模块中注入一些东西?如果是的话怎么办?

我创建这样的组件:

0 投票
1 回答
5553 浏览

android - Android Dagger 2 POJO 字段注入 null

今天刚开始使用 Dagger 2,我对如何设置所有内容感到有些困惑。

我正在尝试注入 POJO,但它始终为空。首先,一些代码:

应用程序.java

应用模块.java

应用组件.java

网络管理器.java

网络模块.java

网络组件.java

SomeClass.java

我花了很多时间查看大量教程、SO 问题和示例,但我无法弄清楚我做错了什么。

我 99% 确定我的设置有问题,但我无法弄清楚是什么。