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

dagger2-@singleton注释类的目的是什么

夏侯林
2023-03-14

从Dagger2文档中,我注意到您可以有一个@singleton注释类。将类标记为@singleton的目的是什么,因为我在代码中尝试过这样做,但没有生成singleton对象。我不清楚用这个注释标记我的类有什么用。

从文档中,请关注以下声明:

injectable类上的@Singleton注释也可用作文档。它提醒潜在的维护者,该类可能由多个线程共享。*

@Singleton
class CoffeeMaker {
    // ...
}
@Singleton
public class MyClass {
    @Inject
    public MyClass() {

    }
}
@Inject
MyClass myClass;
//then in onCreate actually inject(this) from your graph of course.

共有1个答案

雷方伟
2023-03-14

@singleton(以及任何其他作用域注释)使类成为依赖关系图中的单个实例(这意味着只要组件对象存在,该实例就将是“singleton”)。

简而言之--每次注入@singleton注释类(使用@inject注释)时,只要从同一个组件注入,它就会是同一个实例。

关于更多内容,我参考了我的博客文章,内容是关于@singleton和其他作用域注释如何在Dagger2中工作:http://frogermcs.github.io/dependency-injection-with-dagger-2-custom-scopes/

 类似资料:
  • 问题内容: 我的问题是非常基本的,为什么我们人们使用注释,此注释的重要性是什么? 在旧的JDK中,为什么它不显示为警告,但是在最新的JDK中,则需要“为什么..”? 问题答案: 假设您有: 您 确实 打算覆盖,但是由于签名中的错误,它不是这样做的。如果使用,则可以让编译器检测故障。它 还会 向任何 阅读 代码的人表明这将覆盖现有方法或实现接口-为他们提供有关当前行为以及重命名该方法可能产生的影响的

  • 问题内容: 我目前正在尝试将Dagger 2集成到Android应用程序中。我的项目设置如下: 图书馆 应用(取决于库) 在我的库项目中,我定义了一个类,稍后将其插入到库以及应用程序项目中的其他需要该类的类(活动和常规类)中。 现在-例如在我的“片段”或“活动”或常规类中,我将上述Singleton注入如下: 大概我想,因为实际上myManager始终为null。显然,它的构造函数也从未被调用过,

  • 问题内容: 在我见过的Java类中 用于什么目的 问题答案: 来自维基百科: 数据库实例的 数据库目录 由元数据组成,其中存储了数据库对象的定义,例如基本表,视图(虚拟表),同义词,值范围,索引,用户和用户组。 另外,如果您的数据库是MySQL,请检查此内容。 希望能有所帮助。

  • 我目前正在尝试将匕首2集成到一个Android应用程序中。我的项目设置如下: 库 应用程序(取决于库) 在我的library项目中,我定义了一个类,以后我将把它注入到库和app项目中需要它的其他类(活动和常规类)中。 我也是这么想的,因为实际上myManager总是空的。很明显,它的构造函数也从来没有被调用过,所以我想我一定遗漏了一些配置方面的东西?或者也许我误解了文档,它根本不是这样工作的?My

  • 我有一个Micronaut应用程序,它的模块都是用Java和Kotlin编写的。Java模块(控制器逻辑)有一个接口,由指定@Singleton注释的Kotlin类实现。 注意:https://github.com/micronaut-projects/micronaut-core/discussions/5254有应用程序jar(demo.zip)和复制步骤。

  • 问题内容: 我正在开发RESTful Web服务,并且在阅读Jersey 文档时遇到了一个注释 在我的Web服务中,我主要是根据作为参数提供的唯一键返回数据。当传递Student_Id时,将类推返回学生的所有信息。 所以我的问题是什么时候适合这种Web服务? 根据文档 如果在请求处理中多次使用资源,则将始终使用同一实例。 那么在那种情况下我们不应该费心使用权利吗? 还有什么用例,我们必须为每个请求