如何用ColdSpring框架管理ColdFusion

ZDNet软件频道 时间:2006-11-15 作者:Builder.com.cn |  我要评论(1)
本文关键词:ColdSpring XML coldfusion developtrend webtrend
Adobe公司的ColdFusion已经在开发社区广受欢迎。本文将向您介绍ColdSpring,解释它是什么,为什么您应该使用它,并提供一些体现它的功能的例子。

Adobe公司的ColdFusion已经在开发社区广受欢迎。它这种突飞猛进似的发展是因为有这样一种反馈循环:更多强大的工具和框架促使应用程序开发人员变得更加优秀,而更加优秀的开发人员又能开发出更多强大的工具和框架。这种不断成功中的一个核心部件就是ColdSpring框架。我将在本文里向您介绍ColdSpring,解释它是什么,为什么您应该使用它,并提供一些体现它的功能的例子。

什么是ColdSpring

ColdSpring是一个由Chris Scott和Dave Ross(在其他社区的领导者的帮助下)为coldfusion开发的一个依赖注入(Dependency Injection)框架。ColdSpring基本上以Java的Spring框架为基础,被用来管理应用程序域模型里的依赖性。这种能力也被叫做控制反转(Inversion of Control),但是这种说法对于我来说似乎还不够直观,所以我坚持使用依赖注入这种叫法。

coldfusion里,对象模型是使用coldfusion组件(CFC)实现的。所以在实际使用中,ColdSpring提供的方式避免了辛苦地手动管理CFC之间的关系。当然ColdSpring的功能不止管理依赖性,但这是它的主要职责。

为什么要使用ColdSpring

优秀的面向对象(OO)设计做法要求您应该更多地使用合成而不是继承。按照这种方式来开发通常意味着您的CFC常常会带有到一个(或者多个)其他CFC的指针作为实例变量。这为您的设计提供了很大的灵活性,但是它的一个不足之处是您不得不管理所有这些依赖性。

让我们想象一个带有两层功能的域模型:一个服务层和一个数据库抽象层。例如,UserService可能会依靠一个UserDAO和一个UserGateway来与数据库进行交互操作。而反过来,您的UserDAOUserGateway这两个CFC可以依靠配置CFC(Configuration CFC)提供关于数据源的名称、秘密等信息,而实用工具CFC(Utility CFC)可以提供一些一般的功能,例如调整结构中所有的值。

在本文中,您不仅仅可以管理这些组件之间的依赖性,它们还必须按照特定的结构被创建。实用工具CFC和配置CFC都必须先被创建,然后供UserDAOUserGateway使用。最后,UserDAOUserGateway都必须在被提供给UserService之前被创建。

依赖注入能力

现在让我们来看看ColdSpring如何能够帮助进行管理CFC的依赖性。您可以以多种方式定义依赖性,但是最常见的方法是使用一个XML文件。用代码初始化ColdSpring非常容易。(列表A

列表A

<cfsetserviceDefinitionLocation = expandPath('services.XML' ) />
<cfsetColdSpring = createObject( 'component', 'ColdSpring.beans.DefaultXMLBeanFactory').init() />
<cfsetColdSpring.loadBeansFromXMLFile(serviceDefinitionLocation) />

一旦完成了这一步,ColdSpring就可以供使用了。要让ColdSpring创建CFC,您只需要调用getBean()方法,并传递所需要的组件的名称就行了,就像下面这样:(列表B

列表B

<cfset test = ColdSpring.getBean('test')/>

我准备向您展示一个示例ColdSpring XML,然后一段一段地浏览,讨论ColdSpring会相应地做什么(列表C)。 


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134