Dagger2

先导入依赖

compile 'com.google.dagger:dagger:2.7'

 annotationProcessor 'com.google.dagger:dagger-compiler:2.7'     Dagger2

 

 

Dagger2 依赖注入框架 在编译期间自动生成代码,负责依赖对象的创建

依赖注入

依赖注入是一种面向对象的编程方式,它的出现就是为了降低耦合, 所谓耦合就是类与类之间的依赖关系,降低耦合就是降低类与类之间的依赖关系。·

 

最简单的依赖注入:有参构造和 set()方法都属于是依赖注入

 

用dagger2提供依赖有什么好处:为了进一步解耦和方便测试,我们会使用依赖注入的方式构建对象 (不使用 new 来创建依赖对象)。在mvp中,presenter层会持有view和model层的依赖,依赖注入主要用于解耦通过依赖注入创建对象,不再使用new来创建对象

 

 

Dagger2的常用注解: 
@Inject:此注解用于告诉Dagger2,我们需要这个类的实例对象。主要用于标记哪个类是需要注入的。
@Module:此注解里面全是方法,用于对外提供对象,自己定义方法,方法上使用@Provides。自定义一个类,以Module结尾,用@Module注解。
@Provides:此注解用于标记方法,表示可以通过这个方法获取一个对象,一般用于自定义类中。
@Component:此注解主要用于关联自定义module类和MainActivity;关联module使用:@Component(modules={UserModule.class});关联Activity,以方法参数的形式传入MainActivity到连接器中

@Named与@Qualifier:用于区别不同对象的实例。必须要成对出现,否则会报错。

@PerActivity:限定对象的生命周期和Activity一样。一般应用于自定义的Component上。

@Singleton:标记为单例模式,如果在自定义Module中使用了此注解,在自定义的Component上也要使用该注解。

用dagger2提供依赖有什么好处:为了进一步解耦和方便测试,我们会使用依赖注入的方式构建对象 (不使用 new 来创建依赖对象)。在mvp中,presenter层会持有view和model层的依赖,依赖注入主要用于解耦通过依赖注入创建对象,不再使用new来创建对象。

依赖注入的目的是:给你提供一个对象依赖。

 @Scope
  @Retention(RetentionPolicy.RUNTIME)
   public @interface ActivityScope {
   }
  @ActivityScope
  @Component (modules = CommonModule.class)
   public interface CommonComponent {
   void inject(GdmapActivity activity);  //GdmapActivity是导航Demo的一个Activity
   }
@Module
 public class CommonModule{
 }



Dagger2是对于MVP进行的解耦

他是通过反射的方式来进行的实例化对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值