第17章Spring概述_第1页
第17章Spring概述_第2页
第17章Spring概述_第3页
第17章Spring概述_第4页
第17章Spring概述_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第17章Spring概述 Spring是一个开源框架 是为了解决企业应用程序开发复杂性而创建的 框架的主要优势之一就是其分层架构 分层架构允许您选择使用哪一个组件 同时为J2EE应用程序开发提供集成的框架 Spring的核心是个轻量级 Lightweight 容器 Container 实现了IoC InversionofControl 模式的容器 基于此核心容器所建立的应用程式 可以达到程式元件的松散耦合 Loosecoupling 让程式元件可以进行测试 Testability 这些特性都使得整个应用程式可以在架构上与维护上都能得到相当程度的简化 17 1Spring简介 本节将对Spring做一个简要的介绍 从中可以理解为什么在J2EE标准已经具备了完善的规范 EJB统治力量如此强大的条件下 还会产生Spring这样的框架 而且一经诞生就被众多的开发人员推崇备至 17 1 1Spring项目历史 Spring是java平台上的一个开源应用框架 它的第一个版本是由RodJohnson写出来的 Rod在他的 ExpertOne On OneJavaEEDesignandDevelopment Java企业应用设计与开发的专家一对一 一书中首次发布了这个框架 后来一批自愿拓展Spring框架的程序开发员组成了团队 2003年2月在著名的开源社区 Sourceforge 上构建了一个项目 在Spring框架上工作了一年之后 这个团队在2004年3月发布了第一个版本 1 0 Spring开始为众多开发人员熟悉 17 1 2Spring的由来 曾经使用过EJB开发J2EE应用的人 一定知道 在EJB开始的学习和应用非常的艰苦 很多东西都不能一下子就很容易的理解 EJB要严格地继承各种不同类型的接口 类似的或者重复的代码大量存在 而配置也是复杂和单调 同样使用JNDI进行对象查找的代码也是单调而枯燥 虽然有一些开发工作随着xdoclet的出现 而有所缓解 但是学习EJB的高昂代价 和极低的开发效率 极高的资源消耗 都造成了EJB的使用困难 而Spring出现的初衷就是为了解决类似的这些问题 17 1 3Spring2 5带来的新特性 2007年底Spring发布了最新的2 5版本 本书也是基于此版本来讲述 新版本有以下新特性 全面支持java6和javaEE5 JDBC4 0 JTA1 1 JavaMail1 4 JAX WS2 0等 全特性的注释驱动依赖注入 包括对限定词的支持 支持基于classpath的组件扫描 自动侦测有注释的类 支持AspectJ切点表达式中包含beanname切点元素 内置AspectJ加载时编织 基于LoadTimeWeaver提取 更多的XML配置文件的名字空间支持 比如context和jms等 最大程度提高编写的方便性 17 1 3Spring2 5带来的新特性 全面修订集成测试框架 支持JUnit4和TestNG 新的基于注释的ServletMVC和PortletMVC控制器风格配置 扩展SimpleJdbcTemplate功能 支持命名的参数等 官方认可的Websphere支持 支持WebSphere6UOWManager机制 Spring框架的jar文件 兼容OSGi绑定 并能直接使用 SpringApplicationContext可被部署为JCARAR文件 用于非主导应用模块 JCA1 5消息终端管理 用于Spring管理的JMS和CCI消息监听器 有重要价值的特性为 基于注释的MVC控制器风格 JAX WS支持和TestNG支持 17 2Spring的基本概念 本节将介绍Spring的一些名词解释和Spring的基本 是读者对Spring有一个大致的了解 17 2 1Spring的组成结构 Spring框架包含许多特性 并被很好地组织在下图所示的七个模块中 解释一下图中的各个模块 核心容器 Spring上下文 SpringAOP SpringDAO SpringORM SpringWeb模块 SpringMVC框架 Spring框架的功能可以用在任何J2EE服务器中 大多数功能也适用于不受管理的环境 Spring的核心要点是 支持不绑定到特定J2EE服务的可重用业务和数据访问对象 毫无疑问 这样的对象可以在不同J2EE环境 Web或EJB 独立应用程序 测试环境之间重用 17 2 2什么是IoC Spring包括两个重要的概念 IoC InversionofControl 中文译为控制反转也可以叫做DI DependencyInjection 依赖注入 还有一个是AOP AspectOrientedProgramming 面向方面的编程 IOC及AOP虽然不是Spring首创 然而其在这两块都是做得很不错的 应该说整个Spring框架就是围绕着其IOC实现及AOP实现架设起来的 控制反转模式的基本概念是 不直接创建对象 但是描述创建它们的方式 在代码中不直接与对象和服务连接 但在配置文件中描述哪一个组件需要哪一项服务 容器 在Spring框架中是IoC容器 负责将这些联系在一起 17 2 3什么是AOP AOP技术的诞生并不算晚 早在1990年开始 来自XeroxPaloAltoResearchLab 即PARC 的研究人员就对面向对象思想的局限性进行了分析 他们研究出了一种新的编程思想 借助这一思想或许可以通过减少代码重复模块从而帮助开发人员提高工作效率 随着研究的逐渐深入 AOP也逐渐发展成一套完整的程序设计思想 各种应用AOP的技术也应运而生 17 3为什么要使用Spring 正如本章一开始就提到Spring是为J2EE应用程序开发提供集成的框架 作用是把需要的功能集成起来 那么当前集成框架很多 国内也有不少很有针对性的集成框架 如 灰狐 系列产品 Jdon等等为何选用Spring呢 17 3 1何谓轻量级 Lightweight 所谓 轻量级 是相对于 重量级 来讲的 在Spring出现之前 企业级开发一般都采用EJB 因为它提供的事务管理 声明式事务支持 持久化 分布计算等等都 简化 了企业级应用的开发 这里的 简化 打了双引号 因为这是相对的 重量级容器是一种入侵式的 也就是说要用EJB提供的功能就必须在代码中体现出来使用的是EJB 比如继承一个接口 声明一个成员变量 这样就把代码绑定在EJB技术上了 而且EJB需要JBOSS这样的容器支持 所以称之为 重量级 17 3 2Spring带来了什么 即使拥有良好的工具和优秀技术 应用软件开发也是困难重重 应用开发往往牵扯到方方面面 每件事情都难以控制 而且 开发周期也很难把握 除非它的确是一个重量级的复杂应用 倒也有情可原 Spring提供了一种轻量级的解决方案 用于建立 快装式企业应用 在此基础上 Spring还提供了包括声明式事务管理 RMI或WebServices远程访问业务逻辑 以及可以多种方法进行的持久化数据库地解决方案 另外 Spring还有一个全功能的MVC框架 并能透明的把AOP集成到软件中去 17 3 3Spring的优势 Spring的兴起和流行是有其原因的 Spring的核心在档案容量上只有不到1MB的大小 而使用Spring核心所需要的资源也是很小的 而Spring是个非侵入性 Nonintrusive 框架 它的目的之一 是让应用程式不感受到框架的存在 减低应用程式从框架移植时的负担 归纳起来Spring有以下特点 1 Spring是一个分层构架 意思是可以选择只用它的一部分 而不影响其他 它的构架体系是内部相容的 所以 将使学习曲线大大降低 例如 可以选择只用Spring的JDBC单一应用或者用Spring管理业务对象 2 Spring可以有效的组织中间层对象 无论是否选择了EJB Spring关心的是那些如果选择Spring或者其他的使用特定的J2EEAPIs的框架而留给自己完成的部件 17 3 3Spring的优势 3 Spring可以消除在许多projects中出现的Singlton的大量使用 主要的问题是 减弱了测试能力和面向对象 4 Spring可以消除规定多样的定制属性文件的需要 用一致的配置操作贯穿整个应用和项目 多样的属性健或者系统属性寻找使用户不得不去读Javadoc或者甚至是源代码 然而 Spring可以使用户非常简单地看到这些class的JavaBean的属性 倒置控制的用法 下面介绍 可以帮助完成简化 5 Spring可以使良好的编程习惯更容易培养 利用接口代替classes减弱编程成本 降至最小 Spring的设计使依靠很少的APIs建立应用成为可能 在Spring应用中的许多业务对象根本不要依靠Spring 利用Spring建立的应用使单元测试变得非常简单 17 3 3Spring的优势 6 Spring是使用EJB成为一个选择 优于成为决定性的应用构架 可以选择作为POJOs或者localEJBs扩展业务借口 而不影响调用代码 7 Spring可以解决没有EJB的许多的问题 Spring可以提供适应许多web应用的EJB的替换方案 例如 Spring可以借用AOP提供声明事务管理 在不用EJB容器的情况下 如果只需要工作在单个的数据库上面 甚至不用JTA的支持 8 Spring提供了一致的数据访问框架 无论用JDBC或者像Hibernate一样的O Rmapping产品 17 3 4其他轻量级容器 目前 轻量级容器在opensource范围已经得到了广泛的认可 而且 作为下一代J2EE构架的基础有着无法比拟的优势 当前 已存在的轻量级容器框架中 有绝大部分来自opensource社群 除了Spring以外还有很多 如下列出的 PicoContainer 主页http www picocontainer orgAvalonApacheSoftwareLicense 主页http avalon apache orgNanoContainer 主页http www nanocontainer orgPeapod 主页http www peapod org 另外还有前面提到的两款国内开发的框架也有一定用户群JFox 主页http www

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论