模块和组件的范围之间的差异

时间:2016-02-09 15:33:55

标签: android dagger-2

Dagger2 @Singleton注释类的@Component注释与模块中的@Provides注释方法有什么区别?

如果我有一个模块,其中所有方法都使用@Singleton注释注释,并且具有相同注释的组件包含该模块,那么这个目的是什么?

@Singleton
@Component(...)
public interface AppComponent {

    // ...

}

@Provides @Singleton Context provideContext() { return context; }

2 个答案:

答案 0 :(得分:1)

注释k方法(或带有@Provides构造函数的类)告诉Dagger实现实际的作用域功能,而注释组件(这是必要的)没有任何功能,但是告诉Dagger“我允许此组件包含此范围的绑定”。请注意,您仍然可以在范围内的组件中使用未范围的绑定,但不能相反。

答案 1 :(得分:-1)

使用Java注释为读者提供文档很好,这是您在第一个示例中可能看到的内容。它在那里非常有用,因此读者可以知道类/接口的预期用途,而无需知道其实例的创建或管理机制。