专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Java教程 » spring简介:(Spring简介 1) »正文

spring简介:(Spring简介 1)

来源: 发布时间:星期日, 2008年12月21日 浏览:2次 评论:0
有关Spring Framework今年夏天你可能已经听见很多议论在本文中,我将试图解释Spring能完成什么和我如何会认为它能帮助你开发J2EE应用framework? 你可能正在想“不过是另外framework”当已经有许多开放源代码(和专有) J2EE framework时为什么你应该费心读这篇文章,或下载Spring Framework? 我相信Spring是独特,若干个原因: . 它定位领域是许多其他流行framework没有Spring关注提供种思路方法管理你业务对象 . Spring是全面和模块化Spring有分层体系结构,这意味着你能选择使用它孤立任何部分,它架构仍然是内在稳定因此从你学习中你可得到最大价值例如,你可能选择仅仅使用Spring来简单化JDBC使用,或用来管理所有业务对象 . 它设计从底部帮助你编写易于测试代码Spring是用于测试驱动工程理想framework Spring对你工程来说它不需要个以上frameworkSpring是潜在地站式解决方案,定位于和典型应用相关大部分基础结构它也涉及到其他framework没有考虑到内容 尽管它仅仅是个从2003年2月才开始开源工程但Spring有较长历史根基这个开源工程是起源自我在2002年后期出版Expert _disibledevent=RodJohnsonInterview). 通过BeanFactory概念Spring成为个倒置控制容器(我非常不喜欢container这个术语它使人联想到重量级容器如EJB容器SpringBeanFactory是个可通过行代码创建容器并且不需要特殊部署步骤) 位于倒置控制背后概念是在Hollywood原则中经常表述:"Don’t call me, I’ll call you." IoC将控制职责搬进了框架中并脱离应用代码涉及到配置地方意思是说在传统容器体系结构中如EJB个组件可以容器并问“我需要它给我做工作对象X在哪里?”;使用IoC容器则只需指出组件需要X对象在运行时容器会提供给它容器基于思路方法名作出这种介绍说明或可能根据配置数据如XML 倒置控制几个重要好处如: . 组件不需要在运行时间寻找合作者所以他们可以更简单编写和维护在SpringIoC版本里组件通过暴露JavaBeanter思路方法表达他们依赖其他组件这相当于EJB通过JNDI来查找EJB查找需要开发人员编写代码 . 同样原因应用代码更容易测试JavaBean属性是简单Java核心并且容易测试:仅编写个包含自身Junit测试思路方法用来创建对象和设置相关属性即可 . 个好IoC实现隐藏了强类型如果你使用个普通factory来寻找合作者你必须通过类型转换将返回结果转变为想要类型这不是个主要问题但是不雅观使用IoC你在你代码中表达强类型依赖框架将负责类型转换这意味着在框架配置应用时类型不匹配将导致;在你代码中你无需担心类型转换异常 . 大部分业务对象不依赖于IoC容器APIs这使得很容易使用遗留下来代码且很容易使用对象无论在容器内或不在容器内例如Spring用户经常配置Jakarta Commons DBCP数据源为个Spring bean:不需要些任何定制代码去做这件事我们说个IoC容器不是侵入性:使用它并不会使你代码依赖于它APIs任何JavaBena在Spring bean factory中都能成为个组件 最后应该强调IoC 区别于传统容器体系结构( 如EJB), 应用代码最小程度依靠于容器这意味着你业务对象可以潜在被运行在区别IoC 框架上-或者在任何框架的外-不需要任何代码改 以我经验和作为Spring用户过分强调IoC给应用代码带来好处是不容易 IoC不是个新概念但是它在J2EE团体里面刚刚到达黄金时间些可供选择IoC 容器: notably, Apache Avalon, PicoContainer 和 HiveMind. Avalon 不会成为特别流行尽管它很强大而且有很长历史Avalon是相当重量级和复杂并且看起来比新IoC解决方案更具侵入性 PicoContainer是个轻量级而且更强调通过构造器表达依赖性而不是JavaBean 属性 和Spring区别设计允许每个类型个对象定义(可能局限性结果来自它对Java代码外元数据拒绝)作为和Spring and PicoContainer and other IoC frameworks比较可参看文章http://www.springframework.org/docs/lightweight_container.html. 这个业面包含了PicoContainer站点链接 Spring BeanFactories 是非常轻量级用户已经成功地将他们应用在applets中和单独Swing应用中(它们也很好地工作在EJB容器中) 没有特殊部署步骤和可察觉启动时间这个能力表明个容器在应用任何层面差不多立即可以发挥非常大价值 Spring BeanFactory 概念应用贯穿于Spring整体 而且是Spring如此内在关键原因在IoC容器中Spring也是唯它使用IoC作为基础概念贯穿于整个框架 对应用开发人员最重要个或多个BeanFactory提供个定义明确业务对象层这是类似但比local session bean层更简单和EJBs区别在这个层中对象可能是相关并且他们关系被自己factory管理个定义明确业务对象层对于个成功体系结构是非常重要 Spring ApplicationContext 是BeanFactory子接口,为下列提供支持: .消息寻找国际化支持 .事件机制允许应用对象发布和随意地注册为事件监听 .便携文件和资源访问 XmlBeanFactory举例 Spring用户通常在XML“bean定义”文件中配置他们应用SpringXML bean定义文档根是个 元素该元素包含个或多个 定义我们般指定个bean定义类和属性我们也必须指定ID作为标识我们将在代码中使用该标志 让我们来看个简单例子在J2EE应用中常看到用来配置 3个应用对象: . J2EE DataSource . 使用DataSourceDAO . 在处理过程中使用DAO业务对象 在下面例子中我们使用个来自Jakarta Commons DBCP项目BasicDataSource这个(和其他存在样)可以简单地被应用在Spring bean factory中它提供了JavaBean格式配置需要在shutdown时被Close思路方法可通过Spring"destroy-method"属性被注册来避免BasicDataSource需要实现任何Spring 接口 代码: com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/mydb
root
我们感兴趣BasicDataSource所有属性都是String型因此我们用元素来指定他们如果必要Spring使用标准 JavaBean属性编辑器机制来转换String以表示其他类型 现在我们定义了DAO它有个对DataSourcebean引用Bean间关系通过元素来指定: 代码:
业务对象有个DAO引用和型属性(exampleParam): 代码:
10
对象间关系般在配置中明确地设置象此例子我们认为这样做是件好事情无论如何Spring也提供了我们叫做"autowire"支持 个la PicoContainer在那里它可以指出bean间依赖关系这样做局限性-如使用PicoContainer-是如果有个特殊类型多个Bean要作出个类型应该和哪个例子相关判断将是不可能方面在factory化后不理想依赖可能会被捕获到(Spring 也为清楚配置提供种可选依赖检查它可以完成这个目) 如果我们不想明确编写他们关系在上面例子中我们可如下使用autowire特性: 10
使用这用使用方法Spring将找出exampleBusinessObjectdataSource属性应该被设置为在当前BeanFactory中找到DataSource实现在当前BeanFactory中如果所需要类型bean不存在或多于将产生
标签:spring spring简介

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: