Guice学习(一)
Guice学习(一)
Guice是Google开发的一个轻量级依赖注入框架(IOC)。Guice非常小而且快,功能类似与Spring,但效率上网上文档显示是它的100倍,而且还提供对Servlet,AOP,Struts等框架的支持;这里是简单代码实现,首先要下载Guice包,http://code.google.com/p/google-guice/这里可以下载;程序结构如下

这里导入了guice包与inject包,最简单的实现;下面是相关代码:
UserDao实现
| packagecom.wf.dao;publicclassUserDao {    publicbooleansaveUser(){        System.out.println("user have save");        returntrue;    }} | 
UserService实现
| packagecom.wf.services;importjavax.inject.Inject;importcom.wf.dao.UserDao;publicclassUserService {    privateUserDao userDao;    @Inject    publicvoidsetUser(UserDao userDao) {        this.userDao = userDao;    }        publicbooleansaveUser(){        booleanresult = userDao.saveUser();        System.out.println(result);        returnresult;    }} | 
下面是相当与Spring中xml的一个类MyModule
| packagecom.wf.util;importcom.google.inject.Binder;importcom.google.inject.Module;importcom.google.inject.Scopes;importcom.wf.services.UserService;publicclassMyModule implementsModule {    @Override    publicvoidconfigure(Binder binder) {        binder.bind(UserService.class).in(Scopes.SINGLETON);    }} | 
这三个类创建完毕后就可以测试了,下面是单元测试:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | packagecom.wf.test;importcom.google.inject.Guice;importcom.google.inject.Injector;importcom.google.inject.Module;importcom.wf.services.UserService;importcom.wf.util.MyModule;importjunit.framework.TestCase;publicclassTest extendsTestCase {    privateUserService userService;    protectedvoidsetUp() throwsException {        userService = newUserService();    }    publicvoidtestUserService(){        Module module = newMyModule();        Injector in = Guice.createInjector(module);        in.injectMembers(userService);        assertTrue(userService.saveUser());    }} | 
以上是注入的简单实现,Guice还有与其它框架的结合使用,可能现在主流还是Spring,不过这个应该也会渐渐被大家注意;感谢Google
Guice学习(一)的更多相关文章
- Google Guice学习
		学习动力:公司项目使用 官方文档:https://github.com/google/guice/wiki/Motivation 学习阶段:入门 主要部份: 简介 Bindings方式 Scopes设 ... 
- Guice 学习(六)使用Provider注入服务( Provider Inject Service)
		1.定义接口 package com.guice.providerInject; import com.google.inject.ProvidedBy; public interface Servi ... 
- Guice 学习(五)多接口的实现( Many  Interface Implementation)
		1.接口 /* * Creation : 2015年6月30日 */ package com.guice.InterfaceManyImpl; public interface Service { p ... 
- Guice 学习(七)常量和属性的注入( Constant and Property Inject)
		1.常量注入方式 package com.guice.ConstantInjectDemo; import com.google.inject.Binder; import com.google.in ... 
- Guice 学习
		Guice: 是一个轻量级的DI框架. 不需要繁琐的配置,只需要定义一个Module来表述接口和实现类,以及父类和子类之间的关联关系的绑定,如下是一个例子. http://blog.csdn.net/ ... 
- Guice 学习(八)AOP (面向切面的编程)
		Guice的AOP还是非常弱的.眼下只支持方法级别上的,另外灵活性也不是非常高. 看例如以下演示样例: Guice支持AOP的条件是: 类必须是public或者package (default) 类不 ... 
- guice基本学习,guice的学习资料(十)
		这个是我前面几篇的参考. guice的学习资料下载:http://pan.baidu.com/s/1bDEPem 路途遥远,但是人确在走.不忘初心,方得始终. 
- java轻量级IOC框架Guice
		Google-Guice入门介绍(较为清晰的说明了流程):http://blog.csdn.net/derekjiang/article/details/7231490 使用Guice,需要添加第三方 ... 
- Java Web 学习路线
		实际上,如果时间安排合理的话,大概需要六个月左右,有些基础好,自学能力强的朋友,甚至在四个月左右就开始找工作了.大三的时候,我萌生了放弃本专业的念头,断断续续学 Java Web 累计一年半左右,总算 ... 
随机推荐
- Wpf 数据绑定之BindingBase.StringFormat
			BindingBase.StringFormat 属性获取或设置一个字符串,该字符串指定如果绑定值显示为字符串,应如何设置该绑定的格式. StringFormat 可以是预定义的.撰写的或自定义的字符 ... 
- (转)织梦dedecms后台发布文章提示“标题不能为空”
			问题症状:V5.7登录后台后,发布英文标题没问题,发布中文会提示“标题不能为空”. 问题根源:htmlspecialchars在php5.4默认为utf8编码,gbk编码字符串经 htmlspecia ... 
- iOSUI基础——懒加载
			1.懒加载基本 懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小).所谓懒加载,写的是其get方法. 注意:如果是懒加载的话则一定要注意先判断是否已经有了,如果没有那么再去进行实例化 ... 
- 关于margin-top失效的解决方法
			常出现两种情况:(一)margin-top失效 先看下面代码: <div><div class="box1" >float:left</div> ... 
- ES5严格模式
			http://www.cnblogs.com/snandy/p/3428171.html 介绍了由ECMA262规范定义的Javascript标准,旨在改善错误检查功能并且标识不会延续到未来js版本的 ... 
- Build Android-x86 ICS 4 Virtualbox from Google Virtualbox Target and Intel Kernel 编译体验
			最近一直在研究android源码的编译,应该说研究的很辛苦,最难的是下源码,总是不停的断掉,最后感谢公司的高网速,找到方法后12G的源码只花了1个小时就下完了. 参考以下网址:http://softw ... 
- Win7下安装Ubuntu双系统常见问题
			[转自己以前的文章] 导航: ● win7下硬盘安装ubuntu常见问题 ● win7下u盘安装ubuntu常见问题 吐槽: Ubuntu的安装花了我将近15个小时,网上常见的.不常见的问题基本我都 ... 
- underscorejs-groupBy学习
			2.18 groupBy 2.18.1 语法 _.groupBy(list, iteratee, [context]) 2.18.2 说明 把list分为多个集合,iterator为分组的依据,返回值 ... 
- 用Javascript的for循环输出质数
			<body> <script type="text/javascript"> for(i=2;i<=300;i++){ var prime = tru ... 
- 委托的lambda表达式
			委托可以用 Lambda 表达式的方法来表示,很多C#的代码都会大量使用 Lambda 表达式,正确理解它的用法还是很重要的. 基础规则: Lambda 运算符 “=>” 左边表示委托实例所需要 ... 
