动态网站制作指南 [  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教程 ]的信息

本月文章推荐
.控制反转(Inversion of Control.
.java 基础入门 pom.xml 元素描述.
.setMinutes 方法.
.判断鼠标双击.
.开源技术:tomcat5.0下配置ssl.
.玩玩Spring之IOC.
.使用JDOM操作XML系列文章三 平面.
.使用Java程序的泛型应该注意的几.
.Java设计模式之迭代器模式.
.weblogic中将SessionFactory配置.
.java和c++比较(1)--虚函数和指针.
.用 Java 语言进行算法作曲.
.破除java神话(一) 垃圾收集解决.
.Spring Framework的公司理念.
.J2EE综合:关于Java EJB容器存取.
.观察者模式组图(Observer Patte.
.访谈:为Java菜鸟帮解答问题二十.
.短路运算符:提高性能和简化代码.
.JBoss收购Arjuna TS等技术并将开.
.精通ejb【一】.

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

发表日期:2008-1-5 |


    摘要:这篇文章描述了在Eclipse RCP中引入依靠注射机制的一个简单方法。为了避免污染Eclipse平台的基础设施并且透明的为RCP添加IoC框架,我们使用了动态字节码操作(使用ObjectWeb ASM类库),Java类加载agent以及Java标注技术的组合。

    Eclipse胖客户端平台(Rich Client Platform,RCP)是一个功能强大的软件基础(software foundation),它基于相互联系并协作的插件,答应开发人员创建通用的应用程序。RCP使得开发人员可以更加关注应用程序的业务逻辑而不是花大量时间来重新发明轮子去编写大量的应用程序治理逻辑。

    控制翻转(IOC)和依靠注射是一种减少程序耦合性的设计模式。它们遵循了一个简单的原则:你不必自己创建对象,你只需要描述如何创建对象。你不必去实例化或者定位你的组件需要的服务,你只需要去描述哪个组件需要哪个服务,其他组件(通常是容器)来负责将它组装好。这也就是闻名的好莱坞原则:不要打电话给我们,我们会打给你。

    这篇文章描述了在Eclipse RCP中引入依靠注射机制的一个简单方法。为了避免污染Eclipse平台的基础设施并且透明的为RCP添加IoC框架,我们使用了动态字节码操作(使用ObjectWeb ASM类库),Java类加载agent以及Java标注技术的组合。

    什么是Eclipse胖客户端平台?

    简单来说,Eclipse胖客户端平台是一组类库,软件框架以及运行环境,它可以用来创建独立运行并且经常需要与网络交互的应用程序。

    尽管Eclipse是作为一个集成开发环境(IDE)框架设计的,但是,从3.0版本开始,整个项目已经被重构成各种独立的组件,以便于可以使用这些组件的一个子集来构建任意的应用程序。这个子集构成了RCP,它包含以下几种组件:基本运行环境,用户接口组件(SWT和JFace),插件以及OSGi层。图1展示了Eclipse平台的主要组件。

    整个Eclipse平台是基于插件和扩展点(extensions points)这样一个要害概念的。一个插件是可以独立开发和发布的功能的最小单元。它一般会打包成一个jar文件并且通过增加功能来扩充Eclipse平台(例如,增加一个编辑器,工具栏按钮或者一个编译器)。整个平台就是一组互相联系并通讯的一组插件的集合。一个扩展点是一个已经存在的互相联系的端点,可以被其他插件用来添加功能(功能:在Eclipse术语中叫做扩展)。扩展和扩展点通过XML配置文件定义并绑定在插件中。

    尽管插件已经使用了关注点分离这样一个重要的模式,但是插件之间的强相互联系和通讯会导致他们之间的强依靠关系。一个典型的例子就是需要定位应用程序需要的各种单例(Singleton)服务,例如数据库连接池,日志处理器,或者用户偏爱(preference)的设置信息的保存等。控制反转和依靠注射是消除这些依靠的可行解决方案。

    控制反转和依靠注射

    +控制反转是一种设计模式,它主要关注如何将服务(或者应用程序组件)的定义和服务如何定位它们依靠的服务进行分离。为了完成这种分离,一般都会依靠一个容器,或者定位框架(locator framework),维护现存服务的列表+提供一种方法来将组件和它们依靠的服务绑定在一起。

    +提供一种方法让应用程序代码可以请求一个已经配置好的对象(例如,一个所有依靠都已经满足的对象),这样就可以保证该对象所有相关的服务都已经可用了。

    现存的框架一般都使用下面三种基本技术的组合来绑定服务和组件:

    +类型一(基于接口):服务对象需要实现一个专门的接口,这个接口为这些服务对象提供了一个对象,服务可以通过这个对象来查询它们的依靠。这是一些早期的容器使用的模式,例如Excalibur. +类型二(基于setter):通过JavaBean属性的setter方法将依靠的服务赋值给服务对象。HiveMind和Spring都是通过这种方式来实现的。

    +类型三(基于构造函数):依靠的服务通过构造函数的参数提供(不通过JavaBean属性暴露)。这是PicoContainer使用的唯一方式。HiveMind和Spring也使用了这种方式。

    我们将采用第二种方式的变种,通过带标注的方法来提供服务。(示例应用的源代码在资源中可以找到)。声明依靠可以采用以下方式:

    @Injected public void aServicingMethod(  Service s1,   AnotherService s2) {  // save s1 and s2 into class variables  // to use them when needed}

    控制反转容器会查找Injected标注并且使用需要的参数来调用这个方法。在我们为Eclipse平台引入IoC的过程中,在服务和可服务对象间建立绑定关系的代码被封装在一个Eclipse插件中。这个插件定义了一个扩展点(com.onjava.servicelocator.servicefactory),用来为应用程序提供服务工厂。当一个可服务对象需要配置时,插件会向工厂请求服务的实例。正如下面的代码,ServiceLocator类将会完成所有的工作。(我们会跳过那些处理扩展点解析的代码,因为这些代码会很简单)


上一篇:JBuilder2007----崭新的Java开发工具 人气:925
下一篇:用代码学习Spring:IoC、AOP 人气:719
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-8-29 oblog v4.6 build 20080827
2008-8-29 ASBLOG v2.5 bulid 080828
2008-8-29 时尚DJ舞曲小偷 v3.1
2008-8-29 仿代码信息分类系统 v1.0 Beta3
2008-8-29 浮梦呓语-个人网站 完整版
2008-8-29 多用户QQ空间Flash播放器
2008-8-29 美思卡企业网站管理系统高级版
2008-8-28 LDV个人相册系统 v1.6.1
2008-8-28 讯时网站管理系统CMS v3.5
2008-8-23 Mini WinMount V0.4
2008-8-23 Vista优化大师3.11正式版
2008-8-23 Wine 1.13
2008-8-23 KlipFolio 5.0 Build 5899-80
2008-8-23 Windows Sysinternals Desktops
2008-8-23 OneTap Movies1.2破解版
2008-8-23 AnnotaterPDF阅读1.1.503 破解版
2008-8-23 SoundMeter分贝测量仪 v1.0汉化破
2008-8-23 iDrum音乐节拍1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | Html转换js | js/vbs加密 | md5加密 | 进制转换
实用工具:汉字翻译拼音 | 符号对照表 | 个税计算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号