Java开发已经走过十年了!随着因特网的飞速发展,Java技术获得了前所未有的广泛应用。从桌面系统到企业应用,从手机到智能卡,处处都能看到它的身影。从1998年Sun公司发布JavaEE 1.0版本开始,在此后的短短几年内,JaveEE获得了巨大的发展,几乎成为企业开发的代名词。.
作为JavaEE中最核心的EJB技术,也一度成为JavaEE应用的核心。不幸的是,EJB在带来了全新的企业级开发模型的同时,也带来了不必要的复杂性:复杂的接口,难于测试和部署。越来越多的开发人员不断反思EJB开发的复杂性,并试图以更简单的Java技术来简化JavaEE应用的开发。Rod Johnson总结了他数年的JavaEE项目经验,在《Expert-One-on-One:JaveEE Design & Development》一书中详细阐述了EJB带来的复杂性,并提出了一系列以轻量级框架为核心的全新的JavaEE设计思想,阐述了如何组合一系列现有的技术并形成了一个初步的框架,这个框架后来便发展为Spring Framework。通过Spring这个轻量级框架,我们终于可以轻松实现过去必须使用复杂而烦琐的EJB才能实现的功能。
Spring提出了以JavaBean为组件模型、针对接口编程、使用依赖注入等许多优秀的设计思想,并且Spring可以无缝整合许多流行的框架,如Struts、Hibernate等。人们很快意识到以Spring框架为基础来开发JavaEE应用程序可以大大简化应用程序的设计、调试和部署,并得到一个松散耦合的系统架构。因此,Spring得到了越来越广泛的应用。随着Spring 2.0版本的推出,添加了大量新的功能,进一步强化了Spring框架在轻量级JavaEE开发领域的主导地位。
本书特色
本书以Spring 2.0版本为标准,试图向读者展示Spring框架的奥秘,引导读者由浅入深、一步一步地掌握Spring框架的使用方法和设计思想。此外,本书还特别注重实践,力图给出能够在实际项目中应用的解决方案,并给出完整的示例代码。在本书的最后二章中,还详细介绍了基于Spring 2.0框架设计并实现的一个完整的Web应用程序——Live在线书店,并给出了许多有用的设计模式和技巧。
在介绍Spring框架的同时,本书也试图介绍与Spring相关的大量第三方框架,涉及领域全面,实用性强。例如,作为ORM框架的Hibernate、iBatis、JDO及最新的JPA:作为Web框架或组件的Struts、WebWork2、Velocity、FreeMarker、Tiles、JSF;作为Web服务框架的Axis和XFire;作为安全框架的Acegi等。本书对每个框架的集成都给出了完整的Eclipse工程,这些示例可以直接作为基本的配置模型并应用到实际项目中。
本书另一大特色是实用性强,以实际项目为出发点,介绍项目开发中应遵循的最佳开发模式。例如,在开发Web服务时,不是从编写复杂的WSDL文件入手,而是首先设计接口,然后采用Java 5注解来实现Web服务的自动部署;在集成Hibernate时,不是从编写配置文件或创建数据库结构入手,而是首先设计Java实体对象,然后通过Java5注解并配合Ant自动完成数据库表的创建,这些都符合实际项目的开发。
本书还介绍了大量实践性极强的例子,并给出了完整的配置步骤,例如,基于泛型的DAO体系设计,结合Lucene和Compass实现全文搜索功能,利用CAS架设单点登录服务器,利用JMX实现对应用程序的远程监控,利用Filter实现无侵入的页面缓存等,这些都是在实际项目开发中经常需要用的,本书均给出了能够直接运行的配置,并配合屏幕截图尽量详细地给出配置步骤,能够最大限度地让初学者无痛起步。
本书的代码注释也非常详细,并且在书中尽量采用中文注释,便于初学者理解。对于许多复杂的模块设计,本书总是给出流程图或关系图,让读者从设计上能更好地整体把握。
本书还几乎覆盖了Spring 2.0版本的新特性,包括使用AspectJ 5注解实现AOP、对JPA的完整支持、新的声明式事务配置方式、对动态语言的支持等。在选择某种解决方案时,优先考虑采用Spring 2.0的新特性并尽量使用Java 5注解进行配置,这也是本书有别于其他介绍Spring 1.x书籍的地方。..
主要内容
本书按照由浅入深、从理论到实践的顺序来安排内容,主要包括以下内容。
第一部分:介绍Spring的诞生和主要功能,并指导读者在Eclipse中编写一个具体的Spring应用程序,以便读者能对Spring有一个初步认识。
第二部分:分别介绍Spring的各主要功能模块,按照由浅到深及各模块的依赖关系,首先介绍作为整个Spring框架核心基石的IoC容器,然后分别介绍Spring的AOP支持、数据访问策略、事务管理及WebMVC模块。紧接着介绍Spring框架的一些非核心但是可能在实际项目中应用的模块,包括远程访问、任务调度、JMS支持、JMX支持、动态语言支持及Acegi安全框架,读者可以根据实际需要有选择地学习。通过第二部分的介绍,读者能全面掌握Spring框架的几乎所有内容。
第三部分:开发一个完整的基于Spring框架的Web应用程序——Live在线书店。这一部分详细介绍了如何利用Spring设计并实现一个多层JaveEE应用程序。在项目开发中,大量应用实际项目的开发方式,包括使用Ant作为构建工具,使用XDoclet自动生成配置文件等。在Live在线书店的实现细节上,还介绍了许多有用的模式和技巧,包括内存和静态文件的缓存模型、一些JavaScript技巧、应用JMX检测系统性能等。读者完全可以将其应用到实际的项目开发中。
需要注意的是,本书中的图例并不是完全按照UML标准绘制的,图例的设计目的是为了突出问题并试图以最清晰的方式展示给读者,因此,读者不必有UML相关知识,只需明白图例的意义即可。
读者对象
本书适合有一定Java基础的读者,对JaveEE开发人员更是特别有帮助。本书既可以作为Spring 2.0的学习指南,也可以作为实际项目开发的参考手册。
本书不仅希望读者能掌握Spring框架的使用方法,还试图阐述Spring框架的实现原理,因此,许多章节都会涉及一些底层实现,例如,AOP和MVC的手动实现方法。不理解这些原理虽然也不会影响Spring的学习,但是却失去了了解Spring框架底层运行机制的机会,也就无从学习Spring框架的设计思想。因此,强烈建议读者在掌握了Spring框架的使用方法后,更深入到Spring框架内部,最好能结合Spring源代码学习Spring的设计思想。如果在脱离Spring的环境下也能自然而然地应用Spring优秀的设计思想,例如,始终坚持针对接口编程,使用依赖注入,那才算真正掌握了Spring框架的精髓。 在本书的写作过程中,得到了家人和朋友的大力支持。在此,我要特别感谢我的妻子对我的大力支持,我还要感谢同事李江华,他为本书第5章的示例编写了Swing界面,最后,我还要感谢为本书提出宝贵意见的朋友和同事。...
廖雪峰
.2007.2.14