前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Dagger基础:Java依赖注入标准(javax.inject)介绍

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

作者头像
提莫队长
发布2020-06-02 15:27:20
1.9K0
发布2020-06-02 15:27:20
举报
文章被收录于专栏:刘晓杰刘晓杰

Scope

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

代码语言:javascript
复制
@Target(ANNOTATION_TYPE)//注意看这里,这是一个加在注解上的注解
@Retention(RUNTIME)
@Documented
public @interface Scope {}

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

代码语言:javascript
复制
@Scope
@Documented
@Retention(RUNTIME)
public @interface Singleton {}

Singleton

Singleton的注释只有一句

代码语言:javascript
复制
Identifies a type that the injector only instantiates once. Not inherited.

仅仅只是初始化一次

Qualifier

代码语言:javascript
复制
@Target(ANNOTATION_TYPE)//注意看这里,这又是一个加在注解上的注解
@Retention(RUNTIME)
@Documented
public @interface Qualifier {}

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

Named

基于string的Qualifier

代码语言:javascript
复制
@Qualifier
@Documented
@Retention(RUNTIME)//一起使用
public @interface Named {
    /** The name. *///可以有属性
    String value() default "";
}

Inject(很重要的一个注解)

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

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

Provider(这是个interface)

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Scope
  • Singleton
  • Qualifier
  • Named
  • Inject(很重要的一个注解)
  • Provider(这是个interface)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档