一般的IOC框架都是通过反射来实现的,但Dagger2作为Android端的IOC框架,为了不影响性能,它是通过apt动态生成代码来实现的。其主要作用就是解耦和管理实例对象。...即使这是通过接口而不是具体类型完成的,它打破了依赖注入的核心原则:一个类不应该知道如何实现依赖注入。...在面向对象的思想中,我们碰到这种情况一般都要抽取父类,Dagger2也是用的这种思想,我们先创建一个BaseModule,用来提供工具类:
@Module
public class BaseModule...,注意我们在创建相关Component的时候多了.baseComponent()方法,其参数就是我们在Application中创建的BaseComponent对象,来确保全局单例。...()在Component中是单例的,所以每次注入的都是同一个实例,所以只会调用一次module中的方法。