动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息



本月文章推荐
.HotJava?网络时代的热咖啡.
.java多线程数据库操作.
.JAVA数组和JAVA集合类的对象操作.
.BioJava – 开源的生物信息学基础.
.我所认识的Apache.
.10年回顾:世界各地开发高手谈Java.
.字符.
.学习XHTM+CSS2.0制作标准站点方法.
.Spring MVC框架的高级配置.
.重载与覆盖.
.Hibernate Annotations&nbs.
.Java开源项目Hibernate.
.跳入JAVA.
.Java程序性能调优的基本知识和JD.
.JAVA起步,环境的配置.
.使用Yahoo Service实现天气.
.读写指定的属性文件演示.
.Java多线程编程经验谈.
.构建自己的基于 Java 的超级计算.
.Java面向对象编程实例详解.

在Eclipse RCP中实现反转控制(IoC)

发表日期:2008-1-5 |



  Eclipse富客户平台(RCP)是一个功能强大的软件平台,它基于插件间的互连与协作,答应开发人员构建通用的应用程序。RCP使开发人员可以集中精力进行应用程序业务代码的开发,而不需要花费时间重新发明轮子编写应用程序治理的逻辑。

  反转控制(Inversion of Control, IoC)和依靠注入(Dependency Injection, DI)是两种编程模式,可用于减少程序间的耦合。它们遵循一个简单的原则:你不要创建你的对象;你描述它们应当如何被创建。你不要实例化你的部件所需要对象或直接定位你的部件所需要的服务;相反,你描述哪个部件需要哪些服务,其它人(通常是一个容器)负责将它们连接到一起。这也被认为是好莱坞法则:don't call us--we'll call you。

  本文将描述一个简单的方式在Eclipse RCP应用程序中使用依靠注入。为了避免污染Eclipse 平台的基础结构以及透明地在RCP之上添加IoC框架,我们将结合使用运行时字节码操作技术(使用 ObjectWeb ASM库)、Java类加载代理(使用java.lang.instrument包)以及Java annotation。

  什么是Eclipse富客户平台?

  用一句话来讲,富客户平台是一个类库、软件框架的集合,它是一个用于构建单机和连网应用程序的运行时环境。

  尽管Eclipse被认为是构建集成开发环境(IDE)的框架,从3.0开始,Eclipse整个产品进行了重构,分割成各种不同的部件,它些部件可以用于构建任意的应用程序。其中的一个子集构成了富客户平台,它包含以下元素:基本的运行时环境、用户界面组件(SWT和JFace)、插件以及 OSGI层。图1显示了Eclipse平台的主要部件。

在Eclipse RCP中实现反转控制(IoC)(图一)
图1. Eclipse平台的主要部件

  整个Eclipse平台是基于插件和扩展点。一个插件是一个可以独立开发和发布的最小的功能单元。它通常打包成一个jar文件,通过添加功能(例如,一个编辑器、一个工具栏按钮、或一个编译器)来扩展平台。整个平台是一个相互连接和通信的插件的集合。一个扩展点是一个互相连接的端点,其它插件可以用它提供额外的功能(在Eclipse中称为扩展)。扩展和扩展点定义在XML配置文件中,XML文件与插件捆绑在一起。

  插件模式加强了关注分离的概念,插件间的强连接和通讯需要通过配线进行设置它们之间的依靠。典型的例子源自需要定位应用程序所需要的单子服务,例如数据库连接池、日志处理或用户保存的首选项。反转控制和依靠注入是消除这种依靠的可行解决方案。

  反转控制和依靠注入

  反转控制是一种编程模式,它关注服务(或应用程序部件)是如何定义的以及他们应该如何定位他们依靠的其它服务。通常,通过一个容器或定位框架来获得定义和定位的分离,容器或定位框架负责:
  • 保存可用服务的集合
  • 提供一种方式将各种部件与它们依靠的服务绑定在一起
  • 为应用程序代码提供一种方式来请求已配置的对象(例如,一个所有依靠都满足的对象), 这种方式可以确保该对象需要的所有相关的服务都可用。
  现有的框架实际上使用以下三种基本技术的框架执行服务和部件间的绑定:
  • 类型1 (基于接口): 可服务的对象需要实现一个专门的接口,该接口提供了一个对象,可以从用这个对象查找依靠(其它服务)。早期的容器Excalibur使用这种模式。
  • 类型2 (基于setter): 通过JavaBean的属性(setter方法)为可服务对象指定服务。HiveMind和Spring采用这种方式。
  • 类型3 (基于构造函数): 通过构造函数的参数为可服务对象指定服务。PicoContainer只使用这种方式。HiveMind和Spring也使用这种方式。
  我们将采用第二种方式的一个变种,通过标记方式来提供服务(下面示例程序的源代码可以在资源部分得到)。 声明一个依靠可以表示为:
 
@Injected public void aServicingMethod(Service s1, AnotherService s2) { 
  // 将s1和s2保存到类变量,需要时可以使用 
}
  反转控制容器将查找Injected注释,使用请求的参数调用该方法。我们想将IoC引入Eclipse平台,服务和可服务对象将打包放入Eclipse插件中。插件定义一个扩展点 (名称为com.onjava.servicelocator.servicefactory),它可以向程序提供服务工厂。当可服务对象需要配置时,插件向一个工厂请求一个服务实例。ServiceLocator类将完成所有的工作,下面的代码描述该类(我们省略了分析扩展点的部分,因为它比较直观):
 
   /** 
     * Injects the requested dependencies into the parameter object. It scans 
     * the serviceable object looking for methods tagged with the 

上一篇:中国年历算法和程式 人气:819
下一篇:Java桌面应用程序设计新贵:SWT 简介 人气:396
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-24 Sablog-X v2.0 预览版
2008-7-24 帝国备份王EmpireBak 2008 正式版
2008-7-24 网趣网上购物系统时尚版 v8.2
2008-7-24 纵横B2B电子商务系统XYECS!B2B v
2008-7-24 e路小说小偷 v1.2.0723
2008-7-24 凌风美女图片站程序 v2.2
2008-7-24 TOM15电影收索程序
2008-7-24 清风信息自动采集生成系统 v1.0
2008-7-24 QQ邮箱编辑器 v1.0 (小小菜刀ASP
2008-7-19 UltraEdit 简体中文增强版 14.10
2008-7-19 CentOS 5.2 i386 LiveCD
2008-7-19 Snapture多功能相机 v1.4
2008-7-19 iAcces中文输入法 v1.0Build016
2008-7-19 Cookbook烹饪秘籍 v2.5
2008-7-19 苹果专用DVD转换工具 v1.1.59汉化
2008-7-19 Modem修复软件ZiPhone修改版04.0
2008-7-19 AgileMessenger即时通讯工具美化
2008-7-19 Sketches画图软件 v0.7b6破解版


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵