本位参考:https://juejin.im/post/5bcc7151f265da0ab41e8f6e

讲Dagger2就不能不讲依赖注入,因为Dagger2是为了解决这个难题而创造出来的,那么什么是依赖注入。

我们在做项目时,经常需要在一个对象里去创建另一个对象的示例,这种行为是产生耦合的常见形式,对于一个大型项目来说,过多的相互依赖会导致代码难以维护。比如说,我们在项目中去new一个对象出来,但是这个类改变的时候,我们要做的就是大面积的修改代码。直接new对象是硬初始化,增加了各个模块之间的耦合性。为了降低耦合,我们便使用依赖注入方法。我们可能已经用了依赖注入,但没有注意到,以下的几种方法都是依赖注入。

构造函数注入

public class Chef{Menu menu;public Man(Menu menu){this.menu = menu;}
}

setter方法注入

public class Chef{Menu menu;public setMenu(Menu menu){this.menu = menu;}
}

接口注入

public interface MenuInject{void injectMenu(Menu menu);
}public class Chef implements MenuInject{Menu menu;@Overridepublic injectMenu(Menu menu){this.menu = menu;}
}

1.添加依赖

implementation 'com.google.dagger:dagger-android:2.17'
implementation 'com.google.dagger:dagger-android-support:2.17'
implementation 'com.google.dagger:dagger:2.17'
annotationProcessor 'com.google.dagger:dagger-compiler:2.17'
annotationProcessor 'com.google.dagger:dagger-android-processor:2.17'

Dagger2 简介相关推荐

  1. Dagger2简介(一)

    Dagger2简介(一) Dagger A fast dependency injector for Android and Java. Dagger是一个依赖注入(Dependency Inject ...

  2. Android依赖注入的实践——Dagger2

    个人博客CoorChice,https://chenbingx.github.io/ ,最新文章将会首发CoorChice的博客,欢迎探索哦 ! 同时,搜索微信公众号CoorChice,或扫描文章末尾 ...

  3. dagger2 注入_如何使用Dagger 2在您的应用程序中实现依赖注入

    dagger2 注入 Kriptofolio应用程序系列-第4部分 (Kriptofolio app series - Part 4) Dependency injection will signif ...

  4. Android神匕首—Dagger2依赖注入框架详解

    简介 Dagger-匕首,鼎鼎大名的Square公司旗下又一把利刃(没错!还有一把黄油刀,唤作ButterKnife) Dagger2 是一个Android依赖注入框架,由谷歌开发,最早的版本Dagg ...

  5. etcd 笔记(01)— etcd 简介、特点、应用场景、常用术语、分布式 CAP 理论、分布式原理

    1. etcd 简介 etcd 官网定义: A highly-available key value store for shared configuration and service discov ...

  6. Docker学习(一)-----Docker简介与安装

    一.Docker介绍 1.1什么是docker Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植 ...

  7. 【Spring】框架简介

    [Spring]框架简介 Spring是什么 Spring是分层的Java SE/EE应用full-stack轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Asp ...

  8. TensorRT简介

    TensorRT 介绍 引用:https://arleyzhang.github.io/articles/7f4b25ce/ 1 简介 TensorRT是一个高性能的深度学习推理(Inference) ...

  9. 谷粒商城学习笔记——第一期:项目简介

    一.项目简介 1. 项目背景 市面上有5种常见的电商模式 B2B.B2C.C2B.C2C.O2O B2B 模式(Business to Business),是指商家和商家建立的商业关系.如阿里巴巴 B ...

最新文章

  1. 使用Schematics启用SAP Spartacus的SSR模式
  2. 【C++】如何提高Cache的命中率,示例
  3. mpu9250姿态融合算法_基于投票方式的机器人装配姿态估计
  4. minio 并发数_MinIO 参数解析与限制
  5. 在位运算中_Java常见的运算符(下)
  6. WLAN通信基础——WLAN物理层通信技术
  7. ZED双目摄像头 Ubuntu18.04 + ROS melodic + opencv3.4.0 + Cuda10.2 + ZED SDK 3.5.6
  8. Windows:定时/进程结束执行命令
  9. 知乎提示浏览器版本过低怎么办
  10. 最优DP转LVDS解决方案|低成本DP to LVDS转换设计|CS5211方案优势
  11. 公众号快速搭建淘客机器人教程
  12. 建站系列:有云服务器和域名怎么建设网站?
  13. hive日期函数,求日期差等,datediff,date_add,date_sub,add_months
  14. 《人类简史》--摘录
  15. 新加坡设自动巡逻机器人,助力城市精细化治理
  16. python中*args,**args的区别
  17. 图灵机器人微信自动聊天功能
  18. 【KVM虚拟化实践与编程】云平台管理系统
  19. 字节跳动面试凉经(挂三面)
  20. Scanner类的next()和nextLine()

热门文章

  1. mysql中的case when 与if else
  2. 操作系统实验报告linux进程管理,计算机操作系统实验报告三Linux进程基本管理.doc...
  3. 喜闻乐见的git autocrlf问题
  4. 3种方法实现弹幕效果
  5. java 翻译接口_java版本 百度翻译接口
  6. 写了开源软件没申专利,反被索赔该怎么办?
  7. OpenGL: 位图字体
  8. CVE-2018-8961复现
  9. 表格 table使用(属性)
  10. 利用这5个办法成为自由职业者,通过远程赚钱,开心旅行、轻松赚钱!