使用dropwizard(3)-加入DI-dagger2】的更多相关文章

Dagger2是一个Java和Android的依赖注入框架. 本文介绍Android中dagger2的基本使用. 其中包括@Inject, @Component, @Module和@Provides注解的使用. 使用依赖注入的好处 1.使用类和被依赖的对象构造分开,这样如果我们需要改变被依赖类的构造方法,不必改动每一个使用类. 2.对各种被依赖类的实例,可以只构造一次. 3.当我们需要更换一种实现时,只需要保证接口一致. 4.利于单元测试,我们可以方便地mock依赖类的对象. 优点总结: 创建对…
前言 Dropwizard官方文档并没有提供国际化的模块,所以只能自己加.Spring的MessageResource用的很顺手,所以copy过来. Easy i18n 在整合Dropwizard的时候,多语言貌似只能通过jdk自带的ResourceBundle拿数据.其实也就够了,但在开发过程中发现需要缓存,需要解析占位符等.代码越写越多,显然不是仅仅一个调用就完事的.写的差不多的时候突然觉得和spring context里的message source结构类似.于是,放弃维护已经开始变的复杂…
java DI 框架spring(web).Guice(web).Dagger&Dagger2(android) (待续...)…
前言 在为dropwizard选择DI框架的时候考虑了很久.Guice比较成熟,Dagger2主要用于Android.虽然都是google维护的,但Dagger2远比guice更新的频率高.再一个是,Dagger2不同于guice的运行时注入,编译时生成代码的做法很好.提前发现问题,更高的效率. 还是那句话,百度到的dagger2资料看着一大堆,大都表层,而且和Android集成很深.很少有单独讲Dagger2的.不得已,去看官方文档. HelloWorld 官方的example是基于maven…
前言 习惯了Spring全家桶,对spring的容器爱不释手.使用dropwizard,看起来确实很轻,然而,真正使用的时候不得不面临一个问题.我们不可能一个resource就能把所有的业务逻辑囊括!那么,必然就要有负责处理逻辑的代码,有要提取的公共的代码,要做面向接口开发等等.按照简单的用法,Java Bean就自己new,只要通过Jersey提供的web能力发出去就好.这样写下来,到处都需要new,难以测试等等.目前我最care的是,每个request过来都要new一堆重复的对象,垃圾回收频…
Dagger2 是一个Android依赖注入框架,由谷歌开发,最早的版本Dagger1 由Square公司开发.依赖注入框架主要用于模块间解耦,提高代码的健壮性和可维护性.Dagger 这个库的取名不仅仅来自它的本意"匕首",同时也暗示了它的原理.Jake Wharton 在对 Dagger 的介绍中指出,Dagger 即 DAG-er,这里的 DAG 即数据结构中的 DAG--有向无环图(Directed Acyclic Graph).也就是说,Dagger 是一个基于有向无环图结构…
接上一篇文章介绍了Dagger2的初步使用,相信刚接触的人会觉得很奇怪,怎么会有很多自己没有定义的代码出现,为什么Component的创建方式是那样的.为了搞清楚这些东西,我们需要查看一下Dagger2 生成的源代码.Dagger2 是一个DI框架,通过学习生成的代码也可以更好的理解Dagger2是如何做依赖注入的. 将上一篇文章中的工程在SublimeText中打开,结构如下图: 可以看到AppComponent 生成了 DaggerAppComponent,Dagger2的生成规则中,我们自…
MVP模式本身相比于MVC模式就已经把View层和Controller层从Activity中进行了分离,将Model层和View层用Presenter层隔开,实现了初步的解耦.如果再加入Dagger2框架,就可以进一步解耦. Dagger2使用的是依赖注入的思想,通过annotation注解的方式实现模块间的解耦,让"只写一小部分代码就可以使一切联系起来"成为了可能(削减了程序中的耦合问题).Dagger是目前为止唯一一个可以生成完整模仿用户手写的可追踪的代码的DI框架. Dagger…
Dagger2是第一个使用生成代码的方式实现依赖注入的框架.作为Dagger的升级版本,自然有它的优势,优先注重的是执行效率.本文着重介绍Dagger2.官方据点传送门: https://google.github.io/dagger//users-guide.html 首先来看一下依赖注入和控制反转 在软件工程领域,DI是一种实现控制反转用来解决依赖的设计模式,依赖是一个可以被使用的对象(服务),注入是把依赖传递给依赖它的对象(客户),即要使用它的对象,这样,服务就成了客户组成的一部分.传递服…
1, 前面两篇文章我们知道了怎么使用常用的四种标签,现在我们结合我们自己的项目中去简单的使用 在我们搭建项目的时候,一般会创建自己的Application,在里面进行一些初始化如一些第三方的GreenDao.ShareSDK等等,再或者提供一些常用的属性初始化:例如初始化屏幕的宽高度.初始化SPUtils工具类等,所以我们可以创建App类继承自Application(这里我只写了简单的App对象创建,没有写其他的任何方法) package com.qianmo.rxjavatext; impor…
原文地址 http://blog.csdn.net/briblue/article/details/75093382 写这篇文章的原因是这两天在编写关于 Dagger2 主题的博文时,花了大量的精力来解释依赖注入这个概念.后来想一下,这些在面向对象开发过程中与依赖相关的诸多术语和概念实际情况下非常的抽象,因此独立成文也有就一定的意义,旨在帮助初学者快速地对这些概念有一个大致的印象,然后通过一些实例来领悟它们之中的内在奥秘. 什么是依赖(Dependency)? 依赖是一种关系,通俗来讲就是一种需…
原文url: http://blog.iliyun.net/2016/11/20/%E6%A1%86%E6%9E%B6%E5%B0%81%E8%A3%85/ 这几年来android的网络请求技术层出不穷,网络请求从最初的HttpClient,HttpURLConnection到Volley,OkHttp,Retrofit.但是如果直接使用,每个网络请求都会重复很多相同的代码,这显然不是一个老司机需要的.接下来我们就讲讲网络请求封装那点事. 主要利用以下技术点 - Retrofit2 Retrof…
原文: https://blog.csdn.net/briblue/article/details/75093382 写这篇文章的原因是这两天在编写关于 Dagger2 主题的博文时,花了大量的精力来解释依赖注入这个概念.后来想一下,这些在面向对象开发过程中与依赖相关的诸多术语和概念实际情况下非常的抽象,因此独立成文也有就一定的意义,旨在帮助初学者快速地对这些概念有一个大致的印象,然后通过一些实例来领悟它们之中的内在奥秘. 什么是依赖(Dependency)? 依赖是一种关系,通俗来讲就是一种需…
初衷 Dagger2的初衷就是通过依赖注入让你少些很多公式化代码,更容易测试,降低耦合,创建可复用可互换的模块.你可以在Debug包,测试运行包以及release包优雅注入三种不同的实现. 依赖注入 使用依赖注入可以带来以下好处: 依赖的注入和配置独立于组件之外. 因为对象是在一个独立.不耦合的地方初始化,所以当注入抽象方法的时候,我们只需要修改对象的实现方法,而不用大改代码库. 依赖可以注入到一个组件中:我们可以注入这些依赖的模拟实现,这样使得测试更加简单. 举个栗子,如下图所示,左边是没有依…
项目编译可以通过,不过没有生成Dagger2的类,导致无法运行项目.. 错误提示 Error:(14, 41) 错误: 找不到符号 符号: 类 DaggerAppComponent 位置: 程序包 com.codeest.geeknews.di.component 和 Error:Execution failed for task ':geeknews:compileGoogleDebugJavaWithJavac'. > Compilation failed; see the compiler…
简介 dagger2:https://github.com/google/dagger Maven Central  2.11版本jar包下载 dagger:https://github.com/square/dagger compile 'com.google.dagger:dagger:2.11'//2017-9-17最新版本为[2.11] annotationProcessor 'com.google.dagger:dagger-compiler:2.11'//dagger-compile…
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina.com 依赖注入 DI 控制反转 IOC 目录 目录依赖注入 Dependency injectionStep1 设计Step2 设计Step3 设计总结控制反转 Inversion Of ControlJAVA中依赖注入的几种方式 依赖注入 Dependency injection 这里通过一个…
轻松学,浅析依赖倒置(DIP).控制反转(IOC)和依赖注入(DI) 2017年07月13日 22:04:39 frank909 阅读数:14269更多 所属专栏: Java 反射基础知识与实战   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/briblue/article/details/75093382 写这篇文章的原因是这两天在编写关于 Dagger2 主题的博文时,花了大量的精力来解释依赖注入这个概念.后来想一下,这些在面向对象开发过…
Dependency Injecte(依赖注入) 首先写个不使用依赖注入的示例 interface // House.java public interface House { void prepareForWar(); void reportForWar(); } 新建两个实现 House 接口的类 // Starks.java public class Starks implements House { @Override public void prepareForWar() { //do…
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina.com 依赖注入 DI 控制反转 IOC 目录 目录控制反转 IOC依赖注入 Dependency injectionStep1 设计Step2 设计Step3 设计总结依赖注入实现了控制反转的思想JAVA中依赖注入的几种方式通过set方法注入通过构造器注入通过注解注入通过接口注入 控制反转 IO…
和人类需要群居一样,程序界的进程.线程也需要通信往来.它们的交流则依赖模块之间.文件之间产生的关系.如何快速地搞清和构建这种关系,同时还能减轻彼此的依赖,需要开发者们认真思考. 我们将这种需求称之为依赖注入(DI,Dependency Injection),这个编程技术由来已久,在讲述之前想来简单回顾下依赖和关联的基本概念. 依赖和关联 像下图示意的那样,模块或类之间的关系大体可以分为依赖(Dependency)和关联(Association)两种.依赖一般表现为局部参数,关联则表现为属性的持有…
2016-12-21 更新:添加@Subcomponent注解以及Lazy与Provider的使用,本文基本完结!如果有好的建议请提出,感谢大家的支持,谢谢 依赖注入 Dagger2是Android中比较热门的依赖注入框架,什么是依赖注入呢?维基百科上是这样描述的: 控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度.其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式…
摘要 面向对象设计(OOD)有助于我们开发出高性能.易扩展以及易复用的程序.其中,OOD有一个重要的思想那就是依赖倒置原则(DIP),并由此引申出IoC.DI以及Ioc容器等概念.通过本文我们将一起学习这些概念,并理清他们之间微妙的关系. 目录 前言 依赖倒置原则(DIP) 控制反转(IoC) 依赖注入(DI) IoC容器 总结 前言 对于大部分小菜来说,当听到大牛们高谈DIP.IoC.DI以及IoC容器等名词时,有没有瞬间石化的感觉?其实,这些“高大上”的名词,理解起来也并不是那么的难,关键在…
一.DIP原则 高层模块不应该依赖于底层模块,二者都应该依赖于抽象. 抽象不应该依赖于细节,细节应该依赖于抽象. 该原则理解起来稍微有点抽象,我们可以将该原则通俗的理解为:"依赖于抽象". 该规则告诉我们,程序中所有的依赖关系都应该终止于抽象类或者接口,从而达到松耦合的目的.因为我们在应用程序中编写的大多数具体类都是不稳定的.我们不想直接依赖于这些不稳定的具体类.通过把它们隐藏在抽象和接口的后面,可以隔离它们的不稳定性. 举个例子 一个Button对象会触发Click方法,当被按下时,…
IoC主要体现了这样一种设计思想:通过将一组通用流程的控制从应用转移到框架之中以实现对流程的复用,同时采用"好莱坞原则"是应用程序以被动的方式实现对流程的定制.我们可以采用若干设计模式以不同的方式实现IoC,比如我们在上面介绍的模板方法.工厂方法和抽象工厂,接下来我们介绍一种更为有价值的IoC模式,即依赖注入(DI:Dependency Injection,以下简称DI). 目录一.由外部容器提供服务对象二.三种依赖注入方式    构造器注入    属性注入    方法注入三.实例演示…
本系列只讲使用方法和使用中遇到的问题,如果还对dagger2还不了解的童鞋儿可以参考文章: http://www.jianshu.com/p/cd2c1c9f68d4 http://www.jianshu.com/p/94d47da32656 使用Dagger2的前提需要添加一些依赖: 1 在Project的 build.gradle文件添加以下内容 buildscript { repositories { jcenter() } dependencies { classpath 'com.an…
目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 上一章,我们介绍了安装和新建控制器.视图,这一章我们来创建个数据模型,并且添加接口和实现类. 添加EF上下文对象 按照我们以前的习惯,我们还是新建几个文件夹 Commons:存放帮助类 Domians:数据模型 Services:接口和实现类 我们在Domains文件夹下添加一个类库 Domain 我们新建一个类 ApplicationDbContext 继承 DbContext using Microsoft.Entit…
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的, IoC是什么 Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想. 在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制.如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转…
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5092083.html 使用Dagger 2依赖注入 - DI介绍 原文:http://frogermcs.github.io/dependency-injection-with-dagger-2-introdution-to-di/ 不久之前,在克拉科夫的 Tech Space 的 Google I/O 扩展中,我 展示 了一些关于使用Dagger 2来进行依…
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5098943.html Dagger2Metrics - 测量DI图表初始化的性能 原文:http://frogermcs.github.io/dagger2metrics-measure-performance-of-graph-initialization/ 几个月前我们通过 Dagger 2 - graph creation performance 经历了…