仅使用Dagger注释使可注射类和单例

时间:2018-10-24 11:13:02

标签: android dagger-2 dagger

我知道有关于如何使用if ((2*x) == n){ 定义单例的教程。但是我的问题不是真的。我的意思是Dagger还提供了一种方法,该方法可通过注释该类的空构造函数而不在Module中声明任何内容来使该类可注入Android组件,对吗?例如

Module

因此,我可以通过以下方式将public class MyApi { @Inject public MyApi(){ } } 注入到MyApi中:

Fragment

通过这种方式,无需在class MyFragment extends Fragment { @Inject protected MyApi myApi; ... } 中手动声明MyApi。匕首明白了。

我的问题是,如果我想让Module是单身人士,我是否可以再添加一个像这样的注释:

MyApi

匕首会理解应该是单身吗?还是我必须在public class MyApi { @Inject @Singleton public MyApi(){ } } 中声明,例如:

Module

2 个答案:

答案 0 :(得分:1)

首先,在课程顶部添加@Singleton

@Singleton
public class MyApi {
    @Inject
    public MyApi() {}
 }

第二,您需要在@Singleton界面顶部添加component

@Singleton
@Component
interface AppComponent {

如果您对此感兴趣,可以在Kotlin中找到完整的指南:https://medium.com/@xiwei/simplest-dagger-example-920bbd10258

答案 1 :(得分:0)

对于所需的行为,您需要在类而不是构造函数上应用注释。看看:

 @Singleton
 public class MyApi {

     @Inject
     public MyApi(){
     }
 }