Google Guice范例解说之使用入门
http://code.google.com/p/google-guice/
Google公司的Bob lee开发的轻量级IoC容器,其特点是:
1、速度快,号称是spring的100倍速度
2、无配置文件,实用JDK5.0的annotation描述组件依赖,简单,而且有编译器检查和重构支持
3、简单,代码量很少
http://code.google.com/p/google-guice/wiki/SpringComparison
这是Google guice和spring IoC容器的对比
另外xwork2.0已经集成了Google guice容器了。
http://docs.google.com/Doc?id=dd2fhx4z_5df5hw8
这是Google guice的快速入门文档,用起来挺简单的。
Google Guice范例解说之使用入门
本文通过范例简单地介绍Google Guice的使用,通过下面的范例我们可以知道,Google Guice的使用非常简单。
Google Guice需要使用JDK1.5以上java环境。
下载Google Guice之后,
有以下几个文件:
aopalliance.jar
guice-1.0.jar
guice-servlet-1.0.jar
guice-spring-1.0.jar
guice-struts2-plugin-1.0.jar
本例只使用到guice-1.0.jar文件,将其加入到class path中。
下面简单地介绍范例:
范例1:使用com.google.inject.Module接口实现类
文件名 说明
文件名 | 说明 |
HelloGuice.java | 业务逻辑接口定义文件 |
HelloGuiceImpl.java | 业务逻辑接口实现文件 |
HelloGuiceModule.java | 该文件必须实现com.google.inject.Module接口 |
TestGuice.java | 测试文件 |
HelloGuice.java
package com.test.guice;
public interface HelloGuice {
public void sayHello();
}
HelloGuiceImpl.java
package com.test.guice;
public class HelloGuiceImpl implements HelloGuice {
public void sayHello() {
System.out.println("Hello Guice!");
}
}
HelloGuiceModule.java
package com.test.guice;
import com.google.inject.Binder;
import com.google.inject.Module;
public class HelloGuiceModule implements Module {
public void configure(Binder binder) {
binder.bind(HelloGuice.class).to(HelloGuiceImpl.class);
}
}
TestGuice.java
package com.test.guice;
import junit.framework.TestCase;
import com.google.inject.Guice;
import com.google.inject.Injector;
public class TestGuice extends TestCase {
public void testHelloGuice() {
Injector injector = Guice.createInjector(new HelloGuiceModule());
HelloGuice helloGuice = injector.getInstance(HelloGuice.class);
helloGuice.sayHello();
}
}
运行TestGuice,打印出:
Hello Guice!
范例2:使用Java Annotation
我们也可以直接为HelloGuice加上@ImplementedBy注释,而省略掉对com.google.inject.Module的实现。
HelloGuice.java
package com.test.guice;
import com.google.inject.ImplementedBy;
@ImplementedBy(HelloGuiceImpl.class)
public interface HelloGuice {
public void sayHello();
}
TestGuice.java
package com.test.guice;
import junit.framework.TestCase;
import com.google.inject.Guice;
import com.google.inject.Injector;
public class TestGuice extends TestCase {
public void testHelloGuice() {
//Injector injector = Guice.createInjector(new HelloGuiceModule());
Injector injector = Guice.createInjector();
HelloGuice helloGuice = injector.getInstance(HelloGuice.class);
helloGuice.sayHello();
}
}
HelloGuiceModule.java不再需要。其余的文件内容不变。
运行TestGuice,打印出:
Hello Guice!
摘自 :http://hi.baidu.com/changzhiwin/blog/item/1e8251861feb553466096e36.html
1. 依赖注入
1.1 类依赖注入
所谓的绑定就是将一个接口绑定到具体的类中,这样客户端不用关心具体的实现,而只需要获取相应的接口完成其服务即可。
HelloWorld.java
Google Guice范例解说之使用入门相关推荐
- Google Guice使用入门
2019独角兽企业重金招聘Python工程师标准>>> 本文通过范例简单地介绍Google Guice的使用,通过下面的范例我们可以知道,Google Guice的使用非常简单. G ...
- Google Guice使用入门(转)
本文通过范例简单地介绍Google Guice的使用,通过下面的范例我们可以知道,Google Guice的使用非常简单. Google Guice需要使用JDK1.5以上java环境. 下载Goog ...
- 超轻量级DI容器框架Google Guice与Spring框架的区别教程详解及其demo代码片段分享...
超轻量级DI容器框架Google Guice与Spring框架的区别教程详解及其demo代码片段分享 DI框架 Google-Guice入门介绍 转载于:https://www.cnblogs.com ...
- guice 框架_玩! 框架+ Google Guice
guice 框架 在我目前正在工作的项目中,我们开始使用Google Guice. 对于那些不知道的人, Google Guice是一个依赖项注入框架. 依赖项注入的基本思想是提供一个其依赖的类,而不 ...
- 玩! 框架+ Google Guice
在我目前正在工作的项目中,我们开始使用Google Guice. 对于那些不知道的人, Google Guice是一个依赖项注入框架. 依赖项注入背后的基本思想是提供一个它依赖的类,而不是使依赖类负责 ...
- guice google_与Google Guice的动手实践
guice google by Sankalp Bhatia 通过Sankalp Bhatia 与Google Guice的动手实践 (A hands-on session with Google G ...
- guice 实例_使用Google Guice消除实例之间的歧义
guice 实例 如果接口有多个实现,则Google guice提供了一种精巧的方法来选择目标实现. 我的示例基于Josh Long ( @starbuxman )的出色文章,内容涉及Spring提供 ...
- 使用Google Guice消除实例之间的歧义
如果接口有多个实现,则Google guice提供了一种精巧的方法来选择目标实现. 我的示例基于Josh Long ( @starbuxman )的出色文章,内容涉及Spring提供的类似机制. 因此 ...
- Google Guice 一个轻量级的依赖注入框架
1.美图 2.概述 2.1 背景 在做项目的时候,看见有段代码直接是使用Google Guice 注入了avaitor表达式. 2.1 官网 Github 主页:https://github.com/ ...
最新文章
- 10秒一部电影,全球首个5G数据连接完成
- curl linux 数组参数_Linux系统调用原理
- Linux pwn入门教程——CTF比赛
- Hyperledger Fabric 三种node节点 (1) 基本概念
- 0074 几道面试题
- centos下配置java环境变量
- Linux下SHELL的PS1变量简介
- python读取文件特定内容_利用python代码获取文件特定的内容,并保存为文档
- Nacos 配置集导出和导入
- PyTorch学习—2.张量的创建与张量的操作
- nginx根据域名做http,https分发
- 3A算法—自动曝光(AE)
- 迈拓恢复出厂设置图解_恢复出厂设置在哪里 如何恢复出厂设置【图解】
- MIT6.031学习笔记:(一)code review
- 学习java随堂练习-20220621
- HTTP响应的内容类型之Content-Type
- 视觉SLAM十四讲读书笔记(2)P10-P27
- 央视版笑傲江湖的价值观 (转)
- 新编计算机英语复习(东华理工专业外语)
- Android总笔记(未全)
热门文章
- Metal之MTLBuffer批量加载顶点数量较多的图形渲染
- 2014\Province_C_C++_B\2 切面条
- 【Java18】Mybatis:jdbc解耦,动态代理,日志
- 【MFC】带进度条的状态栏
- 【内核驱动】 内核驱动中添加系统调用
- html5怎样做纵向导航,HTML5怎么做导航栏
- linux 磁盘过滤驱动_磁盘阵列_磁盘阵列品牌报价及型号大全-北京新维迅科技有限公司....
- linux课程_linux系统使用课程更新提示
- 如何使用jquery_好程序员web前端学习路线分享jQuery学习技巧
- m5310模组数据上传至onenet_5G通信模组799元限量发售,中国移动意欲何为?