美文网首页
Dagger基础:Java依赖注入标准(javax.inject

Dagger基础:Java依赖注入标准(javax.inject

作者: 勇敢地追 | 来源:发表于2019-04-12 19:10 被阅读0次

Scope

有这个注解的类包含了一个可注入的构造函数和管理injector如何重新使用这个实例
如果没有这个注解,injector生成并使用一次,然后就丢弃
有了这个注解,那就会保留以便以后的注入
如果是多线程,那就是线程安全的

@Target(ANNOTATION_TYPE)//注意看这里,这是一个加在注解上的注解
@Retention(RUNTIME)
@Documented
public @interface Scope {}

有Scope注解的注解,举一例Singleton(单例),第二次用之前就不用再次注入了

@Scope
@Documented
@Retention(RUNTIME)
public @interface Singleton {}

Singleton

Singleton的注释只有一句

Identifies a type that the injector only instantiates once. Not inherited.

仅仅只是初始化一次

Qualifier

@Target(ANNOTATION_TYPE)//注意看这里,这又是一个加在注解上的注解
@Retention(RUNTIME)
@Documented
public @interface Qualifier {}

这个注解需要注意,通常和@Retention(RUNTIME)一起使用,可以加上@Documented.同时,标注了这个注解的注解可以有属性

Named

基于string的Qualifier

@Qualifier
@Documented
@Retention(RUNTIME)//一起使用
public @interface Named {
    /** The name. *///可以有属性
    String value() default "";
}

Inject(很重要的一个注解)

Inject支持构造函数、方法和字段注解,也可能使用于静态实例成员。可注解成员可以是任意修饰符(private,protected,public)。
注入顺序:构造函数、字段,然后是方法

Inject注解的构造函数可以是无参或多个参数的构造函数。
Inject每个类中最多注解一个构造函数。
在字段注解字段不能是final的
在方法上注解不能是抽象方法,同时不能声明自身参数类型

Provider(这是个interface)

同在一个包下的还有Provider<T>
注释很好理解
Provides instances of T. Typically implemented by an injector. ......
提供T的实例,通常implement一个injector(暂时没有实例来展示怎么用,讲dagger的时候会说明的)

相关文章

网友评论

      本文标题:Dagger基础:Java依赖注入标准(javax.inject

      本文链接:https://www.haomeiwen.com/subject/qkehwqtx.html