第1章 开始Spring之旅
一切从Bean开始。
在1996年,Java还只是一个令人兴奋的刚出生的开发语言,许多开发者之所以非常关注它是因为他们看到了如何使用Applet来创建动态的Web应用,但是很快他们看到这个陌生的新语言不只是能做些耍把戏的卡通程序。不同于之前的其他语言,Java可以实现使用分布的模块来建立一个复杂的应用,它们为Applet而来,为组件而留。
1996年12月,Sun微系统公司发布了JavaBeans 1.00-A规范。JavaBeans为Java定义了软件组件模型。这个规范规定了一系列的编码规范,这使简单的Java对象可以被重用,并且很容易就组成比较复杂的应用。尽管JavaBeans起初是为定义可重用应用组件而生的,但是它们被大量地用在了用户窗口模型中。它过于简单,以至于无法胜任任何实际的工作。企业级应用开发人员想得到更多的功能。
复杂的应用往往需要一些服务,如事务支持、安全、分布计算等,这些服务是JavaBeans无法直接提供的。所以在1998年3月,Sun发布了EJB1.0规范。该规范把Java组件扩展到服务器端,提供了很多必需的企业级服务,但是它不再像原来的JavaBeans那样简单了。事实上,除了名字和JavaBeans有点相像外,EJB已经和JavaBeans没有什么关系了。
尽管很多成功的应用是使用EJB建立的,EJB从来没有实现过它的预期目标——简化企业级应用开发。EJB的声明式编程模型确实简化了很多基础设施层面的开发,如事务和安全,但在部署文件维护和各种接口(home、remote/local接口)实现等方面变得很复杂。开发人员慢慢地不再对EJB痴迷,结果这几年EJB的普及率持续下降,很多开发人员开始寻找其他简单的方法。
现在Java组件开发重新焕发青春,很多新技术包括AOP和DI为JavaBeans提供了很多EJB才拥有的强大功能。这些技术使用EJB那样的声明式编码模型来提供简单洁净Java对象(POJO)。当简单的JavaBeans足以胜任时,你再也不愿意去写那些笨重的EJB组件了。
目前,EJB已经能够提供基于POJO的编程模型,其利用了像DI和AOP那样的思想,使得最新的EJB规范要比前者简化很多。对于多数开发者来说,这样的前进步伐太小了、太迟了。到EJB 3规范上市时,其他基于POJO的开发框架已经在Java领域打下了坚实的基础。
负责轻量级POJO开发就是Spring框架,这也是本书要讨论的内容。本章中,我们将从更高的角度来讨论Spring框架,并给读者更全面的体验。本章给出了Spring所解决的一类问题,并为本书其他章节打下了坚实的基础。首要的事情是搞明白Spring是什么。
1.1 Spring是什么
Spring是一个开源框架,由Rod Johnson创建,他在Expert One-on-One:J2EE Design and Development 这本书中阐述过这个框架。Spring是为简化企业级应用开发应运而生的。使用Spring,你可以用简单的JavaBeans来实现那些以前只有EJB才能实现的功能。不只是服务端开发能从中受益,任何Java应用开发都能从Spring的简单、可测试和松耦合特征中得到好处。
注意:为了避免歧义,我们使用“Bean”来表示传统的JavaBeans,使用“EJB”来代表Enterprise JavaBeans,我们还会经常使用术语POJO(Plain Old Java Object)。
Spring具有很多功能,可以将它们归纳为几个基本部件,Spring是一个轻量级的DI和AOP容器框架。也许这个描述并不简单,但它确实概括出了Spring的核心功能。为了深入了解Spring,让我们把这个描述分解开来。
轻量级——从大小和应用开支上说Spring都算是轻量级的。整个Spring框架可以打成一个2.5MB多一点的JAR包,并且Spring的处理开支也非常小。更重要的是,Spring是非侵入式的:基于Spring开发的应用中的对象一般不依赖于Spring的类。
依赖注入——Spring提供了一种松耦合的技术,称为依赖注入(DI)。使用DI,对象是被动接收依赖类而不是自己主动去找。你可以将DI理解为JNDI的反转——对象不是从容器中查找它的依赖类,而是容器在实例化对象的时候主动将它的依赖类注入给它。
面向切面——Spring对面向切面编程提供了强大支持,通过将业务逻辑从应用服务(如监控和事务管理)中分离出来,实现了内聚开发。应用对象只做它们该做的——业务逻辑,它们不负责(或关心)其系统问题(如日志和事务支持)。
容器——Spring是一个容器,因为它包含并且管理应用对象的生命周期和配置。你可以通过配置来设定你的Bean是单一实例,还是每次请求产生一个实例,并且设定它们之间的关联关系。Spring有别于传统的重量级EJB容器,这些容器通常很大,很笨重。
框架——Spring实现了使用简单的组件配置组合成一个复杂的应用。在Spring中,应用中的对象是通过XML文件配置组合起来的。并且Spring提供了很多基础功能(事务管理、持久层集成等),这使开发人员能够专注于开发应用逻辑。
总之,将Spring划分为这几个基本组件,所获得就是一个Spring框架,它能够帮助你开发出松耦合的应用代码,这些工作都是由Spring完成的,松耦合的优点(可维护性和可测试性)使得Spring更具有价值且应用范围更广。
然而,Spring做得更多。Spring框架提供了几个用于创建DI和AOP的模块,利用它们可以打造一个功能全面的应用平台。
| 回书目 上一节 下一节 |
|
||||
| · 浏览器的战国时代 · CCNA认证考试Pass必备 · 无线网络环境 · 无线路由器故障处理 · 解析35岁技术人的价值.. · 无线重中之重:安全问题 · 无线局域网基本知识 · 家庭无线局域网 |
· 华为七千人主动辞职规.. · 微软出价446亿美元收购.. · 虚拟化的“赤壁之战” · 802.11n:下一代的无线.. · 脉冲无线电uwb专题 · AIX操作系统管理应用 · 云计算时代来临 · 求职必杀技 决战面试官 |
|||
|
||||
| · SOA 面向服务架构 · SQL Server 2008/2005.. · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 · 无线网状网(MESH) · Windows远程桌面应用 · C#技术开发指南 |
· Apache技术专题 · Windows集群服务应用 · C#技术开发指南 · 文档格式标准开战 OOXM.. · 路由器设置与口令恢复 · Linux 集群技术专题 · PHP开发应用手册 · SOA 面向服务架构 |
|||
|
||||
| · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · C#技术开发指南 · 三层交换技术专题 · Apache技术专题 · C#技术开发指南 |
· Windows远程桌面应用 · 企业数据恢复指南 · Windows集群服务应用 · 路由器设置与口令恢复 · Linux 集群技术专题 · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · 解析35岁技术人的价值.. |
|||