Dagger 2 和@Singleton 的使用

Sut*_*000 2 java dagger-2

我继承了一个使用 Dagger 2 的 Java Web 服务项目。基于我目前对 Dagger 的有限理解,我很困惑为什么注入的每个类在 dagger 模块类中都有单例注释。如果我在没有 dagger 的情况下创建这个应用程序,它们就不会都是单例,这是 dagger 特有的,还是以前的开发人员只是误用了 Dagger?

Dav*_*jak 5

[...] 注入的每个类都有单例注释 [...] 这是特定于 dagger [...] 的东西吗?

不。@Singleton是 Dagger 默认包含的唯一范围,但您也可以创建自定义范围,使用@Reusable它可能会创建多个对象,但如果可能会重用它们,或者根本没有范围。

还是之前的开发人员只是误用了 Dagger?

如果可能的话,你应该问问他们。如果每个对象都是单例,这看起来他们没有在设置中投入太多精力,只是复制粘贴声明,至少这是我的假设。