Dagger2 介绍
一般的IOC框架都是通过反射来实现的,单Dagger2作为android端的IOC框架,为了不影响性能,它是通过apt动态生成代码来实现的。
Dagger2 的注解
- @Inject : 通常在需要依赖的地方使用这个注解。换句话说就是你用它来告诉Dagger这个类或者字段需要依赖注入。这样,Dagger就会构造一个类的实例并满足他们的依赖。
- @Module :Modules类里面的方法专门提供依赖,所有我们定义一个类,用@Module注解,这样Dagger在构造类的实例的时候,就知道从哪里去找到需要的依赖。modules的一个重要特征是它们设计为区分并组合在一起
- @Provide : 在modules中,我们定义的方法使用这个注解,以此来告诉Dagger我们想构造对象提供这些依赖。
- @Component : Components从根本上来说就是一个注入器,也可说是@Inject和@Module的桥梁,它主要作用就是 链接两个部分。Components可以提供所有定义了的类型实例,比如:我们必须用@Component注解一个接口让后列出所有的@Modules组成改组件,如果缺失了任何一块都会在编译的时候报错。所有的组件都可通过他的modules知道依赖的范围。
- @Scope : Scopes可是非常的有用,Dagger2可以通过自定义注解限定注解作用域
理论就到这里下面我们来看下代码:
1528113303504.png
这个是Appliction的Component提供了app必须的实例。
接下来看AppModule
1528115482215.png
然后我们在看怎么在使用者中去使用module给我们提供的实例
1528166618258.png
以上为本人自己在学习Dagger2的微薄了解。
想要更好的了解Dagger2建议阅读这篇文章:https://github.com/luxiaoming/dagger2Demo#begin
网友评论