快速业务通道

使用Spring框架轻松解决数据访问和配置问题 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18

使用Spring框架轻松解决数据访问和配置问题

时间:2011-03-23 Nicholas Chase

如果您是一名典型的开发人员,那您必然乐意得到一个可解决数据访问问题的解决方案,也会欢迎任何能够简化配置的工具。如果不是有人提出了 Spring,则对 Web 应用程序做一个总体介绍将非常困难,对于这些特定的问题更是如此。但是,天哪,我们真的需要另外一种 Web 应用程序框架吗?在我决定撰写一期 Geronimo 叛逆者文章,来探讨 Apache Geronimo 和 Spring 的交叉时,我就知道,这正是搞清所有关于 Spring 框架的传闻的大好时机。Jeff Genender 为我解答了很多难题,我完成了这个任务。

控制反转使配置更轻松

通过求助于 Jeff Genender、Geronimo committer 和周围的能人,我开始了寻求有关 Spring 框架的所有问题的答案的旅程。我替那些不熟悉 Spring 的人提出了这样的问题:Spring 究竟为何物?

稍做调查后,我了解到,Spring 是一种 Web 应用程序 API,它包含了模型-视图-控制器(Model-View-Controller,MVC)模式的实现,供那些不喜欢 Struts 的人使用。但是到底是什么本事使其声名显赫?哪种至关重要的特性为此框架提供了关键部分?

“Spring 是一个 IoC 容器”,Jeff 解释道,“那代表控制反转(Inversion of Control),使您能够注入在 XML 文件中声明的依赖项。”

IoC 对我来说是一个新术语,因此 Jeff 解释说,创建应用程序时通常会拥有依赖另一个对象的对象。例如,您拥有一个表示三明治制造机的对象,该对象引用了另一个对象:三明治装填机。因此您可能拥有下面这样的代码(参见清单 1)。

清单1:一个样例类

package com sandwiches; public class SandwichMaker implements FoodMaker { private SandwichFiller filler; private String currentSandwich; public void setSandwichFiller(SandwichFiller filler) { this.filler = filler; } public void setNameOfSandwich(string currentSandwich) { this.currentSandwich = currentSandwich; } public void makeSandwiches() { //make sandwiches using the SandwichFiller } }

当然,实际的 SandwichFiller 将取决于您想要制造何种类型的三明治。因此百吉饼商店和大型三明治商店的 SandwichFiller 类实现可能会有所不同。实例化 SandwichMaker 类时,您当然可通过调用 setSandwichFiller() 方法提供 SandwichFiller 的适当实现。但随后需要更改代码,在新位置安装 SandwichMaker。Spring 让您能够创建包含这些依赖项定义的应用程序上下文。(因此有时将此称作依赖项注入。)

文件可能形入清单 2 所示。

清单2:ApplicationContext.xml 文件

<beans> <bean id="bagel" class="com.sandwiches.BagelShop"> <property name="breadPreference" value="bagel" /> <property name="diameter" value="5" /> </bean> <bean id="ccandjFiller" class="com.sandwiches.CreamCheeseAndJellyFiller"> <property name="sandwichType" ref="bagel" /> <property name="creamCheesePortion" value="60" /> <property name="jellyPortion" value="40" /> <property name="jellyFlavor" value="grape" /> </bean> <bean id="sandwichMaker" class="com.sandwich.SandwichMaker"> <property name="sandwichFiller" ref="ccandjFiller" /> <property name="na

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号