Android —— Dagger依赖注入库
来源:互联网 发布:哥本哈根大学 知乎 编辑:程序博客网 时间:2024/05/17 00:10
Dagger2介绍
Dagger2 是一个Android依赖注入框架,由谷歌开发,最早的版本Dagger1 由Square公司开发。依赖注入框架主要用于模块间解耦,提高代码的健壮性和可维护性。Dagger 这个库的取名不仅仅来自它的本意“匕首”,同时也暗示了它的原理。Jake Wharton 在对 Dagger 的介绍中指出,Dagger 即 DAG-er,这里的 DAG 即数据结构中的 DAG——有向无环图(Directed Acyclic Graph)。也就是说,Dagger 是一个基于有向无环图结构的依赖注入库,因此Dagger的使用过程中不能出现循环依赖。
通过注解实现
Dagger2 通过注解来生成代码,定义不同的角色,主要的注解有:@Inject、@Module 、@Component 、@Provides 、@Scope 、@SubComponent 等。
大致方法:
- 首先进行配置信息
1)使用Android Studio 创建一个新的项目,在Project的 build.gradle文件添加以下内容:
buildscript { dependencies { classpath 'me.tatarka:gradle-retrolambda:3.2.4' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' }}
2)并在Module下的build.gradle添加以下内容:
apply plugin: 'com.neenbedankt.android-apt' //一定要设置,下面的apt依赖才能实现apply plugin: 'me.tatarka.retrolambda'android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }}dependencies { apt 'com.google.dagger:dagger-compiler:2.4' compile 'com.google.dagger:dagger:2.4' provided 'org.glassfish:javax.annotation:10.0-b28'}
# @inject
通常在需要依赖的地方使用这个注解。换句话说,你用它告诉Dagger这个类或者字段需要依赖注入。这样,Dagger就会构造一个这个类的实例并满足他们的依赖。
基本使用实例:
1.需要用来注入的类
public class Poetry { private String mPemo; // 用Inject标记构造函数,表示用它来注入到目标对象中去 @Inject public Poetry() { mPemo = "生活就像海洋"; } public String getPemo() { return mPemo; }}
2.连接器 Component
//用@Component表示这个接口是一个连接器,能用@Component注解的只//能是interface或者抽象类@Componentpublic interface MainComponent { /** * 需要用到这个连接器的对象,就是这个对象里面有需要注入的属性 * (被标记为@Inject的属性) * 这里inject表示注入的意思,这个方法名可以随意更改,但建议就 * 用inject即可。 */ void inject(MainActivity activity);}
3.注入使用
public class MainActivity extends Activity { //添加@Inject注解,表示这个mPoetry是需要注入的 @Inject Poetry mPoetry; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 使用Dagger2生成的类 生成组件进行构造,并注入 DaggerMainComponent.builder() .build() .inject(this); Toast.makeText(getApplicationContext(),mPoetry.getPemo(),Toast.LENGTH_SHORT).show(); }}
结果:
弹Toast:生活就像海洋。
注意点:
一定要有连接器 ,利用@Component来标注,否则会DaggerMainComponent.builder()
报错找不到类。
.build()
.inject(this);
0 0
- Android —— Dagger依赖注入库
- Dagger——Android的依赖注入框架
- Android开源框架——依赖注入Dagger
- Android依赖注入库Dagger的使用
- Android 依赖注入之Dagger
- 【Android】【Dagger】Dagger2 依赖注入
- Dagger——java和Android的高速依赖注入工具
- Android 依赖注入(DI)框架 Dagger
- Android Dagger依赖注入框架浅析
- Android依赖注入:Dagger、RoboGuice和ButterKnife
- Android Dagger依赖注入框架浅析
- Android依赖注入: Dagger (Part 1)
- Android依赖注入: Dagger (Part 2)
- Android依赖注入:Dagger(Part 3)
- Android 依赖注入框架 Dagger 学习
- Android Dagger依赖注入框架浅析
- Android依赖注入:Dagger、RoboGuice和ButterKnife
- Android Dagger依赖注入框架浅析
- Java学习笔记之对象的序列化和反序列化
- JS控制只能输入数字并且最多允许小数点两
- PY常见Demo集合
- Java数组对象转型
- 保存/恢复Activity和Fragment状态的最佳实践(译)
- Android —— Dagger依赖注入库
- osg::Geode,osg::Drawable,osg::Shape,osg::Geometry
- 第三周项目4(2)顺序表的应用
- android自定义CheckBox和RadioButton中文字和图片之间距离
- java 如何保证接口的安全性
- mqtt paho ssl java端代码【转】
- 全局变量和局部变量在内存里的区别
- Android基础知识点
- Content-disposition中Attachment和inline的区别、ContentType设置