首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Dagger2做静态注入, 对比Guice.

Dagger 依赖注入的诉求, 这边就不重复描述了, 在上文Spring以及Guice的IOC文档中都有提及, 既然有了Guice, Google为啥还要搞个Dagger2出来重复造轮子呢?...因为使用动态注入, 虽然写法简单了, 耦合也降低了, 但是带来了调试不方便, 反射性能差等一些缺点. 而Dagger跟Guice最大的差异在于, 他是编译期注入的, 而不是运行时....构建工程 既然Dagger是静态注入的, 那么他自然也跟其他动态注入框架工程有点区别, 编译时需要额外依赖dagger-compiler, dagger-producers等, 不过运行时的jar只需要...下面我们通过Dagger注入的方式来写. 写法很简单, 跟Guice类似, 我们只需要在reportpage成员上加@Inject注解....同时添加一个Component对象, 用来告诉Dagger, 应该注入到该类, 并扫描其中@Inject的成员 1 @Component 2 public interface PrintjobComponent

2.9K70

Android 使用dagger2进行依赖注入(基础篇)

前言 Dagger2是首个使用生成代码实现完整依赖注入的框架,极大减少了使用者的编码负担, 本文主要介绍如何使用dagger2进行依赖注入。如果你不还不了解依赖注入,请看这一篇。 1....1.2 构建Injector 有了提供依赖的组件,我们还需要将依赖注入到需要的对象中。连接提供依赖和消费依赖对象的组件被称为Injector。dagger2中,我们将其称为component。...如果函数声明参数为Activity,dagger2会认为没有需要注入的对象。...至此,我们使用dagger实现了最简单的依赖注入。 2. 多层依赖 除了上面这种最简单的形式,dagger2还可以使用component作为component的依赖,实现多层级的依赖注入。...最后 本文试图用最简单的例子介绍Android中如何使用dagger2进行依赖注入,因此有很多dagger2的特性并未涉及,比如@Scope注释,以及dagger2自动生成代码的分析调试。

1.1K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Dagger2 Android应用:@Scope和@Subcomponent

    这部分会介绍Dagger2中比较莫名的概念,同样也不涉及Android的具体代码。...Dagger2使用中的核心技巧包括@Subcomponent和@Scope,这两个注解对架构的层次关系有非常重要的作用。...Dagger2的作用域 @Scope 作用域是Dagger2中一个比较重要的概念,各种奇淫巧技,比如单例,都是通过它来实现的。...是的其实在Dagger2中,单例对象的实现方式就是用@Scope,Dagger2给开发者提供了一个默认的已经定义好的单例注解,@Singleton。...Dagger2会在运行期判断这种情况,如果是一个不需要参数的Module,那么它在没有传入module实例的时候没有任何问题,Dagger2帮你实例化一个module对象;对于需要参数的module而我们又忘了设

    87420

    推荐!国外程序员整理的Java资源大全

    依赖注入 帮助代码实现控制反转模式的函数库。 Dagger :编译期的注入框架,没有使用反射,主要用于Android开发。 Guice:轻量级注入框架,功能强大可与Dagger媲美。...JavaFX:Swing的继承者。 Scene Builder:JavaFX虚拟布局工具。 高性能 与高性能计算有关的资源,包括集合以及很多具体功能的函数库。 Disruptor:线程间消息函数库。...hftc:Hash set和hash map。 HPPC:基本类型集合。 Javolution:针对实时嵌入式系统的函数库。 Trove:基本类型集合。 IDE 视图简化开发的集成开发环境。...JVM和JDK 目前的JVM、JDK实现。 JDK 9:JDK 9早期访问版本。 OpenJDK:开源实现。 日志 记录应用程序的日志函数库。 Apache Log4j 2:对之前版本进行了完全重写。...James Weaver:Java、JavaFX、IoT开发者、作者和演讲者。 Java EE:Java EE Twitter官方账号。 Java Magazine:Java杂志官方账号。

    1.9K30

    基于java平台的常用资源整理

    ---- 依赖注入 帮助代码实现控制反转模式的函数库。 Dagger :编译期的注入框架,没有使用反射,主要用于Android开发。 Guice:轻量级注入框架,功能强大可与Dagger媲美。...JavaFX:Swing的继承者。 Scene Builder:JavaFX虚拟布局工具。 ---- 高性能 与高性能计算有关的资源,包括集合以及很多具体功能的函数库。...hftc:Hash set和hash map。 HPPC:基本类型集合。 Javolution:针对实时嵌入式系统的函数库。 Trove:基本类型集合。...Apache Log4j 2:对之前版本进行了完全重写。现在的版本具备一个强大的插件和配置架构。 kibana:对日志进行分析并进行可视化。 Logback:Log4j原班人马作品。...James Weaver:Java、JavaFX、IoT开发者、作者和演讲者。 Java EE:Java EE Twitter官方账号。 Java Magazine:Java杂志官方账号。

    1.7K20

    Java学习资料汇总

    依赖注入 帮助代码实现控制反转模式的函数库。 Dagger :编译期的注入框架,没有使用反射,主要用于Android开发。 Guice:轻量级注入框架,功能强大可与Dagger媲美。...JavaFX:Swing的继承者。 Scene Builder:JavaFX虚拟布局工具。 高性能 与高性能计算有关的资源,包括集合以及很多具体功能的函数库。 Disruptor:线程间消息函数库。...hftc:Hash set和hash map。 HPPC:基本类型集合。 Javolution:针对实时嵌入式系统的函数库。 Trove:基本类型集合。 IDE 视图简化开发的集成开发环境。...JVM和JDK 目前的JVM、JDK实现。 JDK 9:JDK 9早期访问版本。 OpenJDK:开源实现。 日志 记录应用程序的日志函数库。 Apache Log4j 2:对之前版本进行了完全重写。...James Weaver:Java、JavaFX、IoT开发者、作者和演讲者。 Java EE:Java EE Twitter官方账号。 Java Magazine:Java杂志官方账号。

    2K50

    从 Dagger 到 Hilt,谷歌为何执着于让我们用依赖注入?

    例如在 Dagger 里,你要对某个类的依赖进行注入,你需要手动获取依赖图和执行注入依赖操作: ? 而在 Hilt 里,注入会自动完成: ?...除了共享的对象,不共享的也可以用依赖注入的方式来进行初始化,因为依赖注入的作用除了对共享对象提供一致性支持,也可以让我们在创建任何对象的时候省一些思考和力气: @Inject newUser: User...Hilt 和 Dagger 虽然用法和 ButterKnife 很像,都是给变量加注解,然后变量会自动赋值,但它们的功能定位是不一样的:Hilt 和 Dagger 是做依赖注入的,而 ButterKnife...和 ViewBinding 是做视图绑定的。...这可不是个文字游戏,依赖注入和视图绑定是有本质区别的:依赖注入是由外部对对象进行初始化,也就是所谓的控制翻转;而视图绑定是让变量去指向一个已经有了的 View,它的依赖依然是由依赖持有者自己决定的,这是一个本质的区别

    1.4K20

    Android--Hilt入门

    、构造函数注入 和Dagger相同,Hilt也分两种注入方式,以上篇Dagger中的代码为例子,来对比两个框架的使用区别 1.gradle中配置依赖 工程gradle中导入插件: dependencies..."com.google.dagger:hilt-android-compiler:$hilt_version" } 2.使用@Inject注解定义需要注入的类 /** * 模拟本地数据源 */ class...fun index(): Call } 3.定义模块 和Dagger相同,使用@Moudle注解就可以表示一个模块,使用@Provides注解提供给Component生成注入对象的方法...ViewWithFragmentComponent View#super() 视图销毁时 2.预定义的Scope Hilt定义的子组件作用域在dagger.hilt.android.scopes包下...使用SingletonComponent对应的作用域@Singleton即可,使用方法也是和Dagger相同的 @InstallIn(SingletonComponent::class) //表示全局组件

    1.5K20

    嵌入式和pc的区别_嵌入式系统基础教程第2版

    Atitit 嵌入式系统与pc系统的对比 目录 1. 哈佛结构和冯诺依曼结构 普林斯顿结构区 1 2. 中断程序 类库调用 1 3. 指令集 三大流程语句 与 运算语句 赋值语句 1 4....异常处理 2 5. 存储管理(内存 2 6. 安卓嵌入式 2 6.1. Python嵌入式 2 6.2. Java嵌入式开发 2 7. 常见软件功能区别 2 7.1....Db net vs 硬件 2 7.2. Gui vs api 2 7.3....Other 2 8. ref 3 哈佛结构和冯诺依曼结构 普林斯顿结构区 哈佛结构和冯诺依曼结构各有好处,相对于冯·诺依曼结构,哈佛结构更可靠,更加适合于那些程序固化、任务相对简单的控制系统,哈佛结构的微处理器也相对更高效...K; 、终端软件开发在网上可以查到大量的资料,有很多的源代码可以参考或者直接使用;而嵌入式系统一般只能查到厂商提供的芯片资料,具体的应用系统因为硬件不同,查找到的资料和源代码基本上只能参考,而不能直接使用

    46540

    SQL 日期处理和视图创建:常见数据类型、示例查询和防范 SQL 注入方法

    以下是一些常见的SQL日期数据类型和处理方法。...SQL视图 在SQL中,视图是基于SQL语句的结果集的虚拟表。视图类似于真实表,包含行和列,但其数据实际上来自一个或多个真实表。 创建视图 使用CREATE VIEW语句创建视图。...Country = 'Brazil'; 查询视图: SELECT * FROM [Brazil Customers]; 示例 2: 创建高于平均价格的产品视图 CREATE VIEW [Products...DROP VIEW view_name; 示例: 删除"巴西客户"视图 DROP VIEW [Brazil Customers]; SQL注入 SQL注入是一种恶意的代码注入技术,可能会破坏数据库的安全性...示例 2: 基于""=""的SQL注入 考虑用户登录的情况: uName = getRequestString("username"); uPass = getRequestString("userpassword

    37110

    Spring学习笔记(2)一DI依赖注入和Spring Bean配置、注解原理、动态注入

    一、IOC和依赖注入DI Spring容器是Spring框架的核心。容器将创建对象,它们连接在一起,配置它们,并从创建到销毁管理他们的整个生命周期。...实现spring注入一般有两种方法,配置文件,或者用注解。各有不同的作用。 容器获得其上的哪些对象进行实例化,配置和组装通过阅读提供的配置元数据的说明。...Spring IoC容器是利用Java的POJO类和配置元数据的产生完全配置和可执行的系统或应用程序。 二、Spring容器 ---- Spring提供了以下两种不同类型的容器。...2)、直接通过@Autowried 注解注入 直接通过@Autowried 注解对Service对象进行注解即可 在Controller中: @Controller @RequestMapping(...上面的Autowired和Resource是用来修饰字段,构造函数,或者设置方法,并做注入的。

    81640

    JavaFX WebView概述,很强大,内置了类似Electron的功能

    JavaFX WebView: JavaFX WebView  是一个微型浏览器(也称为嵌入式浏览器),它通过JavaFX  应用程序中的API提供Web查看器和完整的浏览功能  。...嵌入式浏览器继承了Node类的所有字段和方法,因此具有其所有功能。 它封装了一个WebEngine对象,将HTML内容合并到应用程序的场景中,并提供了应用效果和转换的属性和方法。...构成嵌入式浏览器的类位于javafx.scene.web包中。...支持以本国语言编写的域名 下图描述了嵌入式浏览器的体系结构及其与其他JavaFX类的关系: 网络引擎: 是一种非可视对象,能够一次管理一个网页 通过其API提供基本的网页功能。...WebView和WebEngine类之间的关系: 用于在JavaFX WebView中加载内容的代码段: 创建WebView,WebEngine对象并通过远程URL加载: 2.加载静态HTML内容:

    12K41

    轻松学,听说你还没有搞懂 Dagger2

    Dagger2 是一款依赖注入的框架,但依赖注入的框架有 ,所以 Dagger2 也并不算是一款新鲜事物,大家觉得新奇不过是因为对于依赖注入框架本身了解过少罢了。...Dagger2 的引进 Dagger2 是适应于 Java 和 Android 开发的依赖注入框架,记住得是它不仅仅对 Android 开发有效。...Dagger2 这类依赖注入框架的出现进一步解放了我们的双手,Dagger2 有一套自己的依赖注入机制,我们不再手动编写注射器,而只要按照规则配置好相应的代码就好了,Dagger2 会自动帮我们生成注射器...而 @Component 相当于联系纽带,将 @inject 标记的需求方和依赖绑定起来,并建立了联系,而 Dagger2 在编译代码时会依靠这种关系来进行对应的依赖注入。...Dagger2 为了能够对第三方库中的类进行依赖注入,提供了 @Provides 和 @Module 两个注解。

    2.1K20
    领券