Dww-s-Blog-3d43ef1bf6e6402db0f7da955d7bd9e6

Dagger2 (二) 基础篇:@Inject和@Component、@Module

本文主要将讲解@Inject 和 @Component、@Module 三个标签。

主要是就是讲解文章核心部分,
 

@Module

首先我们来讲解一下Module 这个注解。它的意义:提供一个外来Module模块。可以插入在各种Component中. 所以它是一个可组装的类.
他本身的自己的能力常用:他可在自身之中什么@Provides注解类;
每当它在自己类中申明一个@Provides 方法。 则会使用apt基于@Provides 来创建对应的lClass,如:
// 填充在有@Module的Class类中
@Provider
public String providesHelloStr() {
	return "hello"
}

基于上在@Module标注的类的实现。(@Provides)我们将会在编译器使用APT生成一个对应的类:

@ScopeMetadata
@QualifierMetadata
@DaggerGenerated
@SuppressWarnings({
    "unchecked",
    "rawtypes"
})
public final class AppModule_ProvideHelloStringFactory implements Factory<String> {
  private final AppModule module;

  public AppModule_ProvideHelloStringFactory(AppModule module) {
    this.module = module;
  }

  @Override
  public String get() {
    return provideHelloString(module);
  }

  public static AppModule_ProvideHelloStringFactory create(AppModule module) {
    return new AppModule_ProvideHelloStringFactory(module);
  }

  public static String provideHelloString(AppModule instance) {
    return Preconditions.checkNotNullFromProvides(instance.provideHelloString());
  }
}