文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | firefox | WPS | 杀毒软件 | Picasa
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发JavaGuice与Spring框架的区别
精品推荐
特别推荐
·实例讲解:Java中的SOAP技术
·Java语言出现的背景 影响及前景
·Java精华积累:初学者都应该搞懂的问题
·Java多媒体框架设计自动播放机实例详解
·如何有效防止Java程序源码被人偷窥?
·Cell插件在J2EE系统中的应用
·初学者想学Hibernate,初级基础教程
·Java语言实现支持视频点播的WEB服务器
·关于Java编程的中文问题的几条分析原则
·确保J2ME无线移动商业应用程序的安全性
·Java开源技术:Eclipse的使用技巧详解
·新手入门:Java中的修饰词使用方法总结
·JAVA开发者应该去的20个英文网站
·使用JDBC创建数据库访问程序
·JDK的命令详解
·Java学习从入门到精通(附FAQ)
·Tomcat性能调整
·JSF:Java中面向Web开发的生旦净末丑
·对Java语言入门初学者的一些建议
·Java技术的新方向
热点TOP10
·在桌面应用中使用JAVA DB
·3D编程指南第一部分:快速进入移动JAVA 3D编程世界
·单源点最短路径Dijkstra算法的JAVA实现
·J2EE核心:iBatis DAO入门与进阶二
·实例讲解:Java中的SOAP技术
·Java图形用户界面设计
·初学者想学Hibernate,初级基础教程
·Java学习从入门到精通(附FAQ)
·用Java实现SMTP服务器
·J2ME蓝牙程序开发实战入门
·FCKeditor编辑器在JAVA中的使用与配置
·Java利器Jakarta Commons(一)
·用java实现RSA算法
·[webservices开发]XFire实战
·J2EE核心:iBatis DAO入门与进阶一
·WebWork的强大的验证器
·为Java程序中添加播放MIDI音乐功能
·Java语言实现支持视频点播的WEB服务器
·FCKeditor在线编辑器的使用
·用Java编写的记事本程序(2)

Guice与Spring框架的区别

日期:2008年5月9日 作者: 查看:[大字体 中字体 小字体]


    依赖注入,DI(Dependency Injection),它的作用自然不必多说,提及DI容器,例如spring,picoContainer,EJB容器等等,近日,Google诞生了更轻巧的DI容器……Guice!
废话不多讲了,先看看Guice是如何实现注入的吧。
定义一个简单的service接口和它的实现吧:

 
public interface MyService ...{
    void myMethod();
}

public class MyServiceImpl implements MyService ...{
    public void myMethod() ...{
        System.out.println("Hello,World!");
    }
}

以上是最普通的接口和其实现,没什么可说的。
定义一个测试类,这个类里边包括service对象的一个引用,这个对象是需要Guice进行注入的

import com.google.inject.Inject;
public class Client ...{
    MyService service;
    @Inject //告诉容器,这里的service对象的引用,需要进行注入
    void setService(MyService service) ...{ //这里的方法名字可以任意定义
        this.service = service;
    }
    public void myMethod() ...{
        service.myMethod();
    }
}

   这里除了加了一个@Inject,和Spring的配置没有任何的区别,@Inject,是表示对容器说,这里的service需要注射,等到运行的时候,容器会拿来一个实例给service,完成注射的过程。

定义Guice的Module文件 告诉容器如何进行注入

import com.google.inject.Binder;
import com.google.inject.Module;
import com.google.inject.Scopes;

public class MyModule implements Module ...{
    public void configure(Binder binder) ...{    binder.bind(MyService.class).to(MyServiceImpl.class).in(Scopes.SINGLETON);
    // 这句代码的意思是说:运行时动态的将MyServiceImpl对象赋给MyService定义的对象,而且这个对象是单例的。
    }
}

创建测试类

import com.google.inject.Guice;
import com.google.inject.Injector;

public class Test ...{

    public static void main(String[] args) ...{
MyModule module = new MyModule();// 定义注射规则
Injector injector = Guice.createInjector(module);// 根据注射规则,生成注射者
        Client client = new Client();
injector.injectMembers(client);// 注射者将需要注射的bean,按照规则,把client这个客户端进行注射
        client.myMethod();   
}
}

运行测试类,控制台输出:Hello,World!
完成注入过程

下面看看Guice还有哪些其它的使用特性。
1,如果在实现你确定MyService定义的对象,就要被注射为MyServiceImpl而不是其它的实现类的话,可以在MyService接口加上@ImplementedBy(MyServiceImpl.class)


import com.google.inject.ImplementedBy;

@ImplementedBy(MyServiceImpl.class)
//我总觉得这样有点背离了依赖注入的初衷了
public interface MyService ...{
    void myMethod();
}

这样的话,在MyModule里的configure方法中就可以不加任何东西,容器就会自动注射给MyServiceImpl对象。

2,可以对Field进行注解式注入
在Client.Java中也可以把这个@Inject标注在MyService  service;的前边,如:@Inject MyService service;



[1] [2] [3] 下一页 




上一篇:Generic Data Access Objects 设计模式

下一篇:JAVA加密解密---自定义类加载器应用

Guice与Spring框架的区别 相关文章:
·交换机和路由器的区别
·第一个Spring MVC程序
·终端服务与远程桌面区别
·绝对意想不到 廉价板与高价板的区别
·用window.location.href实现刷新另个框架页面
·IDE与ATA区别
·详解策略路由和路由策略的区别
·网页制作 设计师的框架
·DVD-R和DVD+R的区别
·经典与现代的结合:在MFC中集成RAD .NET框架
Guice与Spring框架的区别 相关软件:
·SOX 404实施经典资料 COSO-ERM一体化框架
·框架式留言本
·自动分割页面生成框架程序
·SpringboardV0.70

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot