JavaEE开发四大常用框架._第1页
JavaEE开发四大常用框架._第2页
JavaEE开发四大常用框架._第3页
免费预览已结束,剩余7页可下载查看

下载本文档

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

文档简介

1、我们对 Java EE的框架有过很多介绍 , 本文将对 Java EE中常用的四个框架做一下系统的归纳 ,希望大家喜欢。StrutsStruts 是一个基于 Sun Java EE平台的 MVC 框架 ,主要是采用 Servlet 和 JSP 技术来实现的。Struts 框架可分为以下四个主要部分,其中三个就和 MVC 模式紧密相关 : 1、模型 (Model ,本质上来说在 Struts 中 Model 是一个 Action 类(这个会 在后面详细讨论 ,开发者通过其实现商业逻辑 ,同时用户请求通过控制器 (Controller 向 Action 的转发过程是基于由 struts-confi

2、g.xml 文件描述的配置信 息的。2、 视图 (View , View 是由与控制器 Servlet 配合工作的一整套 JSP 定制标签库构成 ,利用她们我们可以快速建立应用系统的界面。3、控制器 (Controller ,本质上是一个Servlet ,将客户端请求转发到相应的Action类。4、一堆用来做 XML 文件解析的工具包 , Struts 是用 XML 来描述如何自动产生一些 JavaBean的属性的 , 此外 Struts 还利用 XML 来描述在国际化应用中的用 户提示信息的 (这样一来就实现了应用系统的多语言支持 。SpringSpring 是轻量级的 Java EE应用程

3、序框架。Spring 的核心是个轻量级容器 (container ,实现了 IoC (Inversion of Control 模式的容器 , Spring 的目标是实现一个全方位的整合框架 , 在 Spring 框架下实现 多个子框架的组合 , 这些子框架之间彼此可以独立 , 也可以使用其它的框架方案 加以替代 , Spring 希望提供 one-stop shop的框架整合方案 。Spring 不会特別去提出一些子框架来与现有的OpenSource框架竞争 ,除非它 觉得所提出的框架夠新夠好 ,例如 Spring 有自己的 MVC 框架方案 ,因为它觉 得现有的 MVC 方案有很多可以改进

4、的地方 ,但它不强迫您使用它提供的方案 , 您可以选用您所希望的框架来取代其子框架 ,例如您仍可以在 Spring 中整合您 的 Struts 框架 。Spring 的核心概念是 IoC , IoC 的抽象概念是依赖关系的转移 ,像是高 层模组不应该依赖低层模组 ,而是模组都必须依赖于抽象是 IoC 的一种表现 , 实现必须依赖抽象 ,而不是抽象依赖实现也是 IoC 的一种表现 , 应用程序 不应依赖于容器 ,而是容器服务于应用程序也是 IoC 的一种表现。Spring 的架构性的好处Spring 能有效地组织你的中间层对象 , 无论你是否选择使用了 EJB 。 如果你仅仅使用了 Struts

5、 或其他的包含了 Java EE特有 APIs 的 framework , 你会发现 Spring 关注了遗留下的问题。Spring 能消除在许多工程上对 Singleton 的过多使用。根据我的经验 ,这是一 个主要的问题 ,它减少了系统的可 测试 性和面向对象特性。Spring 能消除使用各种各样格式的属性定制文件的需要 ,在整个应用和工程 中 , 可通过一种一致的方法来进行配置。 曾经感到迷惑 , 一个特定类要查找迷幻 般的属性关键字或系统属性 , 为此不得不读 Javadoc乃至源编码吗 ?有了 Spring , 你可很简单地看到类的 JavaBean属性。倒置控制的使用 (在下面讨论

6、帮助完 成这种简化。 Spring 能通过接口而不是类促进好的编程习惯 , 减少编程代价到几 乎为零。Spring 被设计为让使用它创建的应用尽可能少的依赖于他的 APIs 。在 Spring 应用中的大多数业务对象没有依赖于 Spring 。使用 Spring 构建的应用程序易于单元。Spring 能使 EJB 的使用成为一个实现选择,而不是应用架构的必然选择。你能选择用 POJOs 或 local EJBs来实现业务接口 ,却不会影响调用代码。Spring 帮助你解决许多问题而无需使用 EJB 。 Spring 能提供一种 EJB 的替换物 ,它们适于许多 web 应用。例如 , Spri

7、ng 能使用 AOP 提供声明性事务而不通 过使用 EJB 容器 ,如果你仅仅需要与单个的数据库打交道 ,甚至不需要 JTA 实 现。Spring 为数据存取提供了一致的框架 , 不论是使用 JDBC 或 O/R mapping 产品(如 Hibernate 。Spring 确实使你能通过最简单可行的解决办法解决你的问题。这些特性是有很大价值的。Spring 能做什么 ?Spring 提供许多功能 ,在此我将快速地依次展示其各个主要方面。任务描述 :首先 ,让我们明确 Spring 范围。尽管 Spring 覆盖了许多方面 ,但我们已经有 清楚的概念 ,它什么应该涉及和什么不应该涉及。Spri

8、ng 的主要目的是使Java EE易用和促进好编程习惯。Spring 不重新开发已有的东西。因此 ,在 Spring 中你将发现没有日志记录的 包,没有连接池 ,没有分布事务调度。这些均有开源项目提供 (例如 Commons Logging 用来做所有的日志输出 , 或 Commons DBCP用来作数据连接池 , 或由 你的应用程序服务器 提供。因为同样的的原因 ,我们没有提供 O/R mapping 层, 对此 ,已有有好的解决办法如 Hibernate 和 JDO 。Spring 的目标是使已存在的技术更加易用。例如 ,尽管我们没有底层事务协 调处理 ,但我们提供了一个抽象层覆盖了 JT

9、A 或任何其他的事务策略。Spring 没有直接和其他的开源项目竞争 ,除非我们感到我们能提供新的一些 东西。 例如 , 象许多开发人员 , 我们从来没有为 Struts 高兴过 , 并且感到在 MVC web framework 中还有改进的余地。 在某些领域 , 例如轻量级的 IoC 容器和 AOP 框架 ,Spring 有直接的竞争 ,但是在这些领域还没有已经较为流行的解决方案。(Spring 在这些区域是开路先锋。Spring 也得益于内在的一致性。所有的开发者都在唱同样的的赞歌 ,基础想法依然是 Expert One-on-One Java EE 设计与开发的那些。并且我们已经能够使

10、用一些主要的概念,例如倒置控制 ,来处理多个领域。Spring 在应用 之间是可移植的。当然保证可移植性总是一次挑战,但是我们避免任何特定平台或非标准化, 并且支持在 WebLogic , Tomcat , Resin , JBoss , WebSphere和其他的应用服务器上的用户。Spring 的核心即是个 IoC/DI 的容器 ,它可以帮程序设计人员完成组件之间的依赖关系注入 ,使得组件之间的依赖达到最小,进而提高组件的重用性 , Spring 是个低侵入性 (invasive 的框架 , Spring 中的组件并不会意识到它正置身于件可以轻易的从框架中脱离 ,而几乎不用任何的修改 ,反

11、过来说 ,Spring 中,这使得组组件也可以简单的方式加入至框架中 ,使得组件甚至框架的整合变得容易。 Spring 最为人重视的另一方面是支持 AOP (Aspect-Oriented Programming , 然而 AOP 框架只是 Spring 支持的一个子框架 ,说 Spring 框架是 AOP 框架并不 是一件适当的描述 , 人们对于新奇的 AOP 关注映射至 Spring 上 , 使得人们对于 Spring 的关注集中在它的 AOP 框架上 ,虽然有所误解 ,但也突显了 Spring 的另 一个令人关注的特色。Spring 也提供 MVC Web 框架的解決方案 ,但您也可以将

12、自己所熟悉的 MVC Web 框架与 Spring 解合 , 像是 Struts 、 Webwork 等等 , 都可以与 Spring 整合而成 为进用于自己的解決方案。 Spring 也提供其它方面的整合 , 像是持久层的整合如 JDBC 、 O/R Mapping 工具 (Hibernate 、 iBATIS 、事务处理等等 , Spring 作了对 多方面整合的努力 ,故说 Spring 是个全方位的应用程序框架。HibernateHibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了轻量级 的对象封装 ,使得 Java 程序员可以使用对象编程思维来操纵数据库。H

13、ibernate 可以在应用 EJB 的 Java EE架构中取代 CMP ,完成数据持久化。它还可以应用在任何使用 JDBC 的场合 , 既可以在 Java 的客户端程序实用 , 也可以在 Servlet/JSP的 Web 应用中使用Hibernate 的工作方式Hibernate 不会对您造成妨碍 ,也不会强迫您修改对象的行为方式。它们不需要实现任何不可思议的接口以便能够持续存在。惟一需要做的就是创建一份XML“ 映射文档 ”告,诉 Hibernate 您希望能够保存在数据库中的类 ,以及它们如 何关联到该数据库中的表和列 , 然后就可以要求它以对象的形式获取数据 , 或者 把对象保存为数

14、据。与其他解决方案相比 ,它几乎已经很完美了。由于本文只是一篇介绍性的文章 ,所以不会引入构建和使用 Hibernate 映射文 档的具体例子 (我在 Hibernate: A Developers Notebook一书的头几章中已经 介绍了一个例子 。此外 ,在网上和 Hibernate 的在线文档中 ,还可以找到一些不 错的例子 , 请参见下面的 “其他信息 ”部分。它实际上相当直观。应用程序对象中 的属性以一种简单而自然的方式与正确的数据库结构相关联。运行时 , Hibernate 读取映射文档 ,然后动态构建 Java 类,以便管理数据库与 Java 之间的转换。在 Hibernate

15、 中有一个简单而直观的 API ,用于对数据库所表 示的对象执行查询。要修改这些对象 , (一般情况下只需在程序中与它们进行 交互 ,然后告诉 Hibernate 保存修改即可。类似地 ,创建新对象也很简单 ;只需 以常规方式创建它们 ,然后告诉 Hibernate 有关它们的信息 ,这样就能在数据库 中保存它们。Hibernate API 学习起来很简单 ,而且它与程序流的交互相当自然。在适当的 位置调用它 , 就可以达成目的。 它带来了很多自动化和代码节省方面的好处 , 所 以花一点时间学习它是值得的。 而且还可以获得另一个好处 , 即代码不用关心要 使用的数据库种类 (否则的话甚至必须知

16、道 。我所在的公司就曾有过在开发过 程后期被迫更换数据库厂商的经历。 这会造成巨大的灾难 , 但是借助于 Hibernate , 只需要简单地修改 Hibernate 配置文件即可。这里的讨论假定您已经通过创建 Hibernate 映射文档 , 建立了一个关系数据库 , 并且拥有要映射的 Java 类。有一个 Hibernate “工具集 ”可在编译时使用 ,以支持 不同的工作流。例如 ,如果您已经拥有 Java 类和映射文档 , Hibernate 可以为您 创建 (或更新必需的数据库表。或者 ,仅仅从映射文档开始 , Hibernate 也能够生成数据类。或者 ,它可以反向设计您的数据库和

17、类 ,从而拟定映射文档。还有一些用于 Eclipse 的 alpha 插件 ,它们可以在 IDE 中提供智能的编辑支持以及 对这些工具的图形访问。使用 Hibernate 的场合既然 Hibernate 看起来如此灵活好用 ,为什么还要使用其他的工具呢 ?下面有 一些场景 , 可以帮助您做出判断 (或许通过提供一些比较和上下文 , 可以有助于 鉴别非常适用 Hibernate 的场合 。如果应用对于数据 的需要十分简单 例如 ,您只想管理一组用户优先 选择 您根本不需要数据库 ,更不用说一个优秀的对象 -关系映射系统了 (即 使它也如 Hibernate 这般易于使用 !从 Java 1.4开

18、始 ,有一个标准的 Java Preferences API可以很好地发挥这个作用。对于熟悉使用关系数据库和了解如何执行完美的 SQL 查询与企业数据库交互的人来说 , Hibernate 似乎有些碍手碍脚 ,这就像带有动力和自动排挡的快艇车 会使注重性能的赛车驾驶员不耐烦一样。 如果您属于这种人 , 如果您所在的项目 团队拥有一个强大的 DBA , 或者有一些 存储 过程要处理 ,您可能想研究一下 iBATIS 。 Hibernate 的创建者本身就把 iBATIS 当作是另一种有趣的选择。我对它 很有兴趣 ,因为我们曾为一个电子商务站点开发了一个类似的系统 (其功能更为 强大 ,而且从那时

19、到现在 ,我们已经在其他环境中使用过它 ,尽管在发现 Hibernate 之后 , 在新项目中我们通常更喜欢使用 Hibernate 。 您可以认为 , 以 SQL 为中心的解决方案 (比如 iBATIS 是 “反向的 ”对象 /关系映射工具 ,而 Hibernate 是一个更为传统的 ORM 。当然 ,还有其他的外部原因会导致采用另外的方法。比如 ,在一个企业环境 中,必须使用成熟的 EJB 架构 (或者其他的一些非普通对象映射系统 。可以为 提供自己的数据存储工具的平台量身定做代码 ,比如 Mac OS Xs Core Data。使 用的可能是像 XML DTD 这样的存储规范 ,而它根本不涉及关系数据库。 但是 , 如果您使用的是富对象模型 , 而且想要灵活、 轻松且高效地保存它 (无 论您是否正要开始或已经决定使用关系数据库 , 只要这是一个选择 而且存在 可用的优秀免费数据库 , 比如 MySQL

温馨提示

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

评论

0/150

提交评论