Spring技术内幕:深入解析Spring架构与设计原理第2版

4星(超过85%的资源)
所需积分/C币:50 2015-12-16 11:00:58 40.23MB PDF
37
收藏 收藏
举报

本书是国内唯一一本系统分析Spring源代码的著作,也是Spring领域的问鼎之作,由业界拥有10余年开发经验的资深Java专家亲自执笔,Java开发者社区和Spring开发者社区联袂推荐。本书第1版不仅在内容上获得了读者的广泛好评,而且在销量上也摘取了同类书的桂冠,曾经一度掀起Java类图书的销售热潮。第2版不仅继承了第1版在内容组织和写作方式上的优点,而且还根据广大读者的反馈改进了若干细节上的不足。更为重要的是,结合Spring的最新版本对过时的内容进行了更新,并增加了大量新内容,使本书更趋近于完美。书从源代码的角度对Spring的内核和各个主要功能模块的架构、设计和实现原理进行了深入剖析。你不仅能从本书中参透Spring框架的优秀架构和设计思想,还能从Spring优雅的实现源码中一窥Java语言的精髓。本书在开篇之前对Spring的设计理念和整体架构进行了全面的介绍,能让读者从宏观上厘清Spring各个功能模块之间的关系;第一部分详细分析了Spring的核心:IoC容器和AOP的实现,能帮助读者了解Spring的运行机制;第二部分深入阐述了各种基于IoC容器和AOP的Java EE组件在Spring中的实现原理;第三部分讲述了ACEGI安全框架、DM模块以及Flex模块等基于Spring的典型应用的设计与实现。论你是Java程序员、Spring开发者,还是平台开发人员、系统架构师,抑或是对开源软件源代码着迷的代码狂人,都能从本书中受益。
为什么要写这本书 本书探讨了 Spring框架的设计原理、架构和运行机制。作为在Java领域最为成功的开源 软件之一, Spring在 Java EE开发中,使用者众多。本书以 Spring的源代码为依托,结合 Spring的设计思路,从内部实现的角度,对 Spring的实现进行了翔实的分析,希望能够通过 这种分析,使读者在开发者的层面掌握 Spring,为开发 Spring应用提供更扎实的框架基础。 忽如一夜春风来”,伴随着2002年 Rod johnson的《 Expert One- on-One J2 EE Design and Development》一书的出版而正式发布的 Spring框架(也就是当年的 interface21),经过这几 年的发展,已经逐渐成熟起来。“吹面不寒杨柳风”, Spring带来的崭新开发理念,也早已伴 随着它的广泛应用而“飞入寻常百姓家”。 与此同时,随着 Spring的不断成熟和完善,开源社区的成长,以及 Spring开发团队的不 懈努力,以 Spring为核心的一系列开源软件产品也越来越丰富,现已发展成为一个包括软件 构建、开发、运行、部署整个软件生命周期的产品族群。 Spring不但改变了 Java ee应用的开 发和服务模式,向纯商业软件发出了有力的挑战,同时也成为Java软件生态链中不可或缺的 重要组成部分。它所具备的那种平易近人、内涵丰富的品质,对我们这些软件爱好者来说, 实在是一个不可多得的学习范本。 简化Java企业应用的开发是 Spring框架的目标。其轻量级的开发思想,为开发者提供便 利的出发点( for the developer, to the developer and by the developer—这是 Rod johnson在 一次演讲中的开场白),以及具有活力的开源社区,所有的这些,都为使用Java开发企业应 用和Web应用带来了福音,这些都是 Spring吸引我们的地方。 在Java企业应用中,与我们熟悉的企业应用服务器一样, Spring.也希望能够集成管理企 业应用资源,以及为应用开发提供平台支持。在这一点上, Spring与UNX和 Windows等传统 意义上的操作系统,在计算系统中起到的作用是类似的。不同点在于,传统操作系统关心的 是存储、计算、通信、外围设备等这些物理资源的管理,并在管理这些资源的基础上,为应 用程序提供统一的平台和服务接口;而 Spring关心的是,如何为开发者集中管理在Java企业 应用和web应用中涉及的数据持久化、事务处理、消息中间件、分布式计算等抽象资源,并 在此基础上,为应用提供了一个基于POJo的开发环境。尽管二者面向的资源、管理的对象 支持的应用,以及使用的场景不同,但它们在整个计算系统中的定位,却有着可以类比和相 互参考之处。所以,笔者根据对传统操作系统的认识方法,粗浅地把 Spring框架划分为核心 组件和应用三个基本的层次,通过这三个层次中一些主要特性来剖析 Spring的工作原理和运 作机制。同时,也用这样的认识逻辑来组织本书中要阐述的内容。 在这样的层次划分中,首先看到的是对IoC容器和AOP这两个核心模块的工作原理的分 析,它们都是 Spring平台实现的核心部分:同时,它们也是 Spring的其他模块实现的基础。 虽然,对大多数开发者而言,都只是在此基础上进行相关的配置和外部功能的使用,但是, 深人理解这两个核心模块的工作原理和运作机制,对于我们更好地应用 Spring进行开发是至 关重要的。因为,从 Spring要简化 Java EE开发的出发点来看,它是通过对POJo开发提供支 持来实现的。具体地说, Spring通过为应用基于POJO的开发模式提供支持,从而使应用开发 和复杂的 Java eE服务实现解耦,并由此通过提高单元测试覆盖率(也就是应用系统的可测 试性)来有效地提高整个 Spring应用的开发质量。在这样的开发场景下,需要把为POJO提供 支持的各种 Java ee服务支持抽象到 Spring应用平台中去,并将其封装起来。具体来说,这 系列的封装工作,在 Spring及其应用实现中,离不开IoC容器和AOP这两个核心模块的支持 它们在很大程度上体现了 Spring作为应用开发平台的核心价值。它们的实现是 Rod johnson在 他的另外一本著作《 Expert One-on-OneJ2 EE Development without EJB》中所提到“ Without EJB设计思想”的具体体现,同时,也深刻地体现了 Spring背后的设计理念。 其次,在IoC容器和AOP这两个核心模块的支持下, Spring为了简化 Java EE的开发,为 应用开发提供了许多现成的用户态的系统组件,比如事务处理、 Web mvc、JDBC、OR映 射、远端调用等,通过这些系统组件,为企业应用服务的实现提供驱动支持。这些由 Spring 或其生态系统(其本身、子项目或者社区)提供的,类似于驱动模块般的系统组件是开发应 用时经常会用到的 Java ee服务抽象。通过使用 Spring提供的这些类似于驱动组件的中间产品, 通过这一层 Java Ee服务的抽象,从而让用户可以通过使用简单的开发接口或应用模板,不 但能够很方便地使用各种 Java ee服务,还可以灵活地选取提供这些服务的各种不同的具体 实现方案。让应用可以在各种第三方开源软件或者商业产品中自由选择,充分体现了 Spring 作为应用平台的开放性。 Spring作为一个开源项目,它本身就是一个开放的生态系统。对于和 Spring相关的一些 项目,可以把它们看做在某个领域的用户应用,因为它们是和 Spring实现紧密相关的,或者 它们本身就作为 Spring框架的应用案例,体现了许多使用 Spring的技巧。这些内容都是我们 开发应用时的理想参考,并且会随着技术的发展而不断丰富,比如 Spring dM、 Spring FLEX、 ACEG安全性框架,以及 Pet clinic应用实例等。一方面,可以把这些实现作为应用的一个 基本方案加以裁剪,以满足特定领域的需求;另一方面,通过剖析这些应用,可以为应用开 发提供很好的参考和借鉴,提高应用开发的效率 从更深层次的技术层面上来看,因为 Spring是一个基于Java语言的应用平台,如果我们 能够对 Spring的运行环境Java计算模型(比如IVM的实现原理)有一些了解,将会加滐我们 对 Spring实现原理的理解。反射机制、代理类、字节码技术等这些JM特性,都是在 Spring 实现中会涉及的一些Java计算环境的底层技术。一般的应用开发人员可能不会直接从事与 JγM底层实现相关的工作,但是,这些计算环境的底层知识对深入理解 Spring是不可缺少的。 说了这么多,很多读者可能已经有些迫不及待了,只有对 Spring的设计和实现身临其境 地接触才是真实的,这里太多的文字已经成为一种累赞。本书将带领你到Spng核心设计这 个茂密而又充满生机的源代码丛林中去一探究竟。在这里,你会惊奇地发现:这个过程就像 是阅读优美的散文一样,是与开源软件开发者及开发者社区之间的一种畅快淋漓的交流,让 人如痴如醉。 第1版与第2版的区别 本书是第2版,在写作过程中吸收了读者对上一版内容的许多意见和建议,比如着重增 加了对$ pring宏观框架和设计方面的阐述,加强了对 Spring各种特性应用场景方面的描述, 并结合了深入具体的源代码实现。希望通过这些改进,给读者一个从应用到设计再到实现的 完整理解,弥补第1版中深度有余,内容层次不够丰富,分析手法单一等诸多不足 较第1版而言,第2版的改动主要体现在以下几个方面,希望读者能够在阅读中体会。 在内容阐述方式上,对每一章的内容进行了调整和重新编排,基本按照“使用场景” 设计和实现过程”、“源码实现”这样的逻辑来重新组织大部分内容。希望通过这样的组织 方式,能够使读者以由表及里,由配置应用到设计实现,从抽象到具体的方式来了解 Spring 的各个模块,从而丰富对 Spring各个层次的认识。 在基于实现源码分析的基础上,增加了许多对 Spring设计的分析,这些设计分析主要包 括:在各个 Spring模块中,核心类的继承关系、主要接口设计、主要功能特性实现的对象交 互关系等。在描述这部分内容时,大多以UML类图和时序图的方式给出,从而帮助读者对 Spring的设计有一个直观的了解,而不至于一下子就深入到 Spring源代码实现中去,导致只 见树木不见森林,另一方面也可以改善对 Spring源代码解读的学习曲线。同时,在设计分析 的过程中,尽可能地对在 Spring设计中使用到的一些典型设计模式进行提示,通过这种方式 使读者可以体会到各种设计模式在 Spring设计中的灵活运用;结合 Spring的设计和实现为设 计模式的运用提供一系列绝佳的实际案例,从而提高读者对软件设计的理解和设计模式的实 际运用能力。 在具体内容的呈现上,对上一版的内容进行了一些调整,这些调整包括:增加了第1章, 对 Spring项目的概要情况进行了简要阐述;同时把第1版中的一些内容,比如源代码环境的 准备、 Spring发布包的构建、 Spring IDE的基本使用,以及 Pet clinic应用实例的分析等内容, 放到了附录部分进行阐述。除此之外,在这一版中,根据 Spring项目的自身发展情况增加了 一些新的内容,比如对 Spring dM和 Spring FLex这两个模块的分析。通过对这些 Spring模块 的分析,一方面可以了解Spng的发展历程,丰富视野:另一方面,也可以看到 Spring与时 俱进的旺盛生命力。 读者对象 口学习Java语言和avaE技术的中高级读者 Spring是利用Java语言实现的,其很多特性的设计和实现都极其优秀,非常具有硏究和参 考价值。对这部分读者来说,不仅可以从本书中了解 Spring的实现原理,还能通过 Spring的设 计原理和源代码实现,掌握大量的Java设计方法、设计模式、编码技巧和 Java ee开发技术。 口 Spring应用开发人员 如果要利用 Spring进行高级应用开发,抑或是相关的优化和扩展工作,仅仅掌握 Spring 的配置和基本使用是远远不够的,必须要对 Spring框架的设计原理、架构和运作机制有一定 的了解。对这部分读者而言,本书将带领他们全面了解 Spring的设计和实现,从而加深对 Spring框架的理解,提高开发水平。同时,本书可以作为他们定制和扩展 Spring框架的参考 资料。 口开源软件爱好者 Spring是开源软件中的佼佼者,它在实现的过程中吸收了很多开源领城的优秀思想,同 时也有很多值得学习的创新。尤为值得一提的是,本书分析 Spring设计和实现的方式也许值 得所有开源软件爱好者进行学习和借鉴。通过阅读本书,这部分读者不仅能领略到开源软件 的优秀思想,还可以掌握分析开源软件源代码的方法和技巧,从而进一步提高使用开源软件 的效率和质量。 口平台开发人员和架构师 Spring的设计思想和体系结构、详细设计和源码实现都是非常优秀的,是平台开发人员 和架构师们不可多得的参考资料。 如何阅读本书 本书主要内容分为三个部分,分别阐述了 Spring的核心、组件和应用三个方面。在展开 这三个部分的内容之前,第1章对 Spring的项目情况和整体架构进行了简要的介绍,这一章 就像一个热身活动,为本书的主要内容做铺垫,如果您已经很熟悉 Spring的使用,这一章可 以自行跳过,直接进入到下面三个主体部分的内容。 第一部分详细分析了oC容器和AOP的实现,这部分内容是理解 Spring平台的基础,适 合对 Spring的运行机理有深入了解需求的读者阅读。在对AOP实现模块的分析中涉及的一些 JVM底层技术,也是读者需要具备的背景知识。 第二部分深入阐述了基于 Spring IoC容器和AOP的 Java EE组件在 Spring中的实现。在这 部分内容中可以看到,每一个组件实现的内容基本上都是相对独立的,读者可以结合自己的 需求选读。如果对 Spring Web mvo的实现感兴趣,可以阅读第4章;如果对 Spring提供的数 据库操作的实现机制感兴趣,可以阅读第5章;如果对 Spring中提供的统一事务处理的实现 感兴趣,可以阅读第6章;如果对 Spring提供的各种不同的远端调用实现感兴趣,可以阅读 第7章。 第三部分讲述了一些基于 Spring的典型应用的实现。如果读者对在 Spring应用中如何满 足应用资源的安全性需求方面的内容感兴趣,可以阅读第8章,本章对为 Spring应用提供安 全服务的ACEG框架的实现进行了分析,在深入了解这部分内容的基础上,读者可以根据自 己的应用需求定制自己的安全系统。第9章分析了 Spring DM的设计和实现,通过 Spring Dm, 可以将 Spring应用便利地架构到OSG的框架上去。第10章分析了 Spring Flex的设计和实现, 为使用 Adobe flex作为应用前端架构的 Spring应用提供参考。 阅读本书时,建议读者在自己的计算机中建立一个源代码阅读环境,这样一方面可以追 踪最新的源代码实现,另一方面,可以在阅读的过程中进行各种方式的索引和动手验证,加 深对开源软件开发方式的体会。关于如何建立 Spring的源代码环境,进行 Spring项目的构建, 通过IDE阅读源代码的基本方法等,感兴趣的读者可以参考本书附录中的内容。 在附录A、B、C中,对如何建立 Spring项目环境进行了简要介绍,这部分内容包括如何 获取 Spring项目的源代码,如何构建 Spring的发布包,如何使用 Spring ide工具等。这些知 识不但适用于建立 Spring的源代码研究环境,还适用于其他的Java开源项目,有一定的普遍 性和参考价值。对于不同的JaVa开源项目,其使用的源代码管理工具、代码仓库的位置、权 限配置会有所不同,但是,整个源代码的获取过程与获取 Spring源代码的过程是类似的,整 个构建过程也与 Spring的构建方式大体相似,是非常值得我们参考的。 在附录D中,对伴随 Spring项目的应用实例 Pet Clinic进行了分析,这个应用实例为 Spring 应用开发提供了一个现实的使用案例,虽然简单,却相对完整。这个应用实例本身也是 Spring团队的作品,是 Spring项目发布的一部分,其中为我们更好地使用 Spring提供参考。 勘误和支持 由于作者对 Spring的认知水平有限,再加上写作时的疏漏,书中还存在许多需要改进的 地方。在此,欢迎读者朋友们指出书中存在的问题,并提出指导性意见,不甚感谢。如果大 家有任何与本书相关的内容需要与我探讨,可以发邮件到jiwenke@gmail.com,也可以加入 本书微群q-weibo.com/943166,我会及时给予回复。最后,衷心地希望本书能给大家带来帮 助,并祝大家阅读愉快! 致谢 感谢互联,感谢开源软件,感谢Java,感谢 Spring,感谢我们的社区,让我体验到如 此美妙的开放氛围,体会到开源软件如此独特的魅力!好了,不多说了,笔者真诚地希望通 过本书为你打开一个小小的入口,曲径通幽,通过这个入口,让我们一起在由开源软件和互 联网构成的美丽风景中快乐地旅行! 计文柯( Wenke j 目录 前言 第1章 Spring的设计理念和整体架构/1 1.1 Spring的各个子项目/2 12 Spring的设计目标/5 1.3 Spring的整体架构/7 14 Spring的应用场景/10 1.5小结/12 第一部分 Spring核心实现篇 第2章 Spring Framework的核心:IoC容器的实现/16 2.1 Spring Ioc容器概述/17 2.1.1IoC容器和依赖反转模式/17 2.1.2 Spring loc的应用场景/18 2.2IC容器系列的设计与实现: Bean Factory和 Application Context/19 221 Spring的IC容器系列/19 2.2.2 Spring loc容器的设计/21 23IC容器的初始化过程/28 231 Bean Definition的 Resource定位!29 232 Bean definition的载入和解析/37 X 233 Bean Definition在IoC容器中的注册/52 24IoC容器的依赖注入/54 2.5容器其他相关恃性的设计与实现/75 2.51 Application Context和Bean的初始化及销毁/75 2.5,2lazy-init属性和预实例化/81 253 Factory Bean的实现/82 2.54 BeanPostProcessor的实现/85 255 autowiring(自动依赖装配)的实现/88 2.5.6Bean的依赖检查/90 2.5.7Bean对IoC容器的感知/91 26小结/92 第3章 Spring AoP的实现/94 31 Spring AOP概述/95 3.1.1AOP概念回顾/95 3.1,2 Advice通知/98 3.13 Pointcut切点/102 3.14 Advisor通知器/l05 32 Spring AOP的设计与实现/106 32,1JVM的动态代理特性/106 3.2.2 Spring AOP的设计分析/108 323 Spring AOP的应用场景/108 33建立 AopProxy代理对象/109 3.31设计原理/109 332配置 Proxy Factory Bean/110 333 ProxyFactory Bean生成 AopProxy代理对象/11l 334JDK生成 AopProxy代理对象/116 3.35 CGLIB生成 AopProxy代理对象/117 34 Spring AOP拦截器调用的实现/19 34.1设计原理/119 3.4.2 JdkDynamicAopProxy的 invoke拦截/120 343Cg1ib2 AopProxy的 Intercept拦截l121 344目标对象方法的调用/122 345AOP拦截器链的调用/123 34.6配置通知器/124

...展开详情
试读 127P Spring技术内幕:深入解析Spring架构与设计原理第2版
立即下载 身份认证后 购VIP低至7折
一个资源只可评论一次,评论内容不能少于5个字
汪聘 资源不错。。值得共享
2016-03-31
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
  • 签到新秀

关注 私信
上传资源赚钱or赚积分
最新推荐
Spring技术内幕:深入解析Spring架构与设计原理第2版 50积分/C币 立即下载
1/127
Spring技术内幕:深入解析Spring架构与设计原理第2版第1页
Spring技术内幕:深入解析Spring架构与设计原理第2版第2页
Spring技术内幕:深入解析Spring架构与设计原理第2版第3页
Spring技术内幕:深入解析Spring架构与设计原理第2版第4页
Spring技术内幕:深入解析Spring架构与设计原理第2版第5页
Spring技术内幕:深入解析Spring架构与设计原理第2版第6页
Spring技术内幕:深入解析Spring架构与设计原理第2版第7页
Spring技术内幕:深入解析Spring架构与设计原理第2版第8页
Spring技术内幕:深入解析Spring架构与设计原理第2版第9页
Spring技术内幕:深入解析Spring架构与设计原理第2版第10页
Spring技术内幕:深入解析Spring架构与设计原理第2版第11页
Spring技术内幕:深入解析Spring架构与设计原理第2版第12页
Spring技术内幕:深入解析Spring架构与设计原理第2版第13页
Spring技术内幕:深入解析Spring架构与设计原理第2版第14页
Spring技术内幕:深入解析Spring架构与设计原理第2版第15页
Spring技术内幕:深入解析Spring架构与设计原理第2版第16页
Spring技术内幕:深入解析Spring架构与设计原理第2版第17页
Spring技术内幕:深入解析Spring架构与设计原理第2版第18页
Spring技术内幕:深入解析Spring架构与设计原理第2版第19页
Spring技术内幕:深入解析Spring架构与设计原理第2版第20页

试读结束, 可继续阅读

50积分/C币 立即下载