本书是国内一本系统分析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开发者,还是平台开发人员、系统架构师,抑或是对开源软件源代码着迷的代码狂人,都能从本书中受益。
畅销书全新升级,第1版广获好评,摘取Spring类图书销量桂冠,掀起Java类图书销售热潮
系统解读Spring版本源代码,从宏观和微观两个角度深入剖析Spring架构设计与实现原理
博学Java专家亲自执笔,Java开发者社区和Spring开发者社区联袂推荐
计文柯:博学软件开发专家和项目经理,拥有10余年业界经验,对Spring等开源软件的应用和实现原理有深入研究和独到见解。产品研发和项目管理经验丰富,曾就职于华为、摩托罗拉等知名企业和硅谷移动互联网创业公司,在软件工程和项目管理方面积累了大量实践。现与同伴一起创立并运营深圳云果科技,专注于云计算解决方案的研究与实施。
前言
第1章 Spring的设计理念和整体架构
1.1 Spring的各个子项目
1.2 Spring的设计目标
1.3 Spring的整体架构
1.4 Spring的应用场景
1.5 小结
及时部分 Spring核心实现篇
第2章 Spring Framework的核心:IoC容器的实现
2.1 Spring IoC容器概述
2.1.1 IoC容器和依赖反转模式
2.1.2 Spring IoC的应用场景
2.2 IoC容器系列的设计与实现:BeanFactory和ApplicationContext
2.2.1 Spring的IoC容器系列
2.2.2 Spring IoC容器的设计
2.3 IC容器的初始化过程
2.3.1 BeanDefinition的Resource定位
2.3.2 BeanDefinition的载入和解析
2.3.3 BeanDefinition在IoC容器中的注册
2.4 IoC容器的依赖注入
2.5 容器其他相关特性的设计与实现
2.5.1 ApplicationContext和Bean的初始化及销毁
2.5.2 lazy-init属性和预实例化
2.5.3 FactoryBean的实现
2.5.4 BeanPostProcessor的实现
2.5.5 autowiring(自动依赖装配)的实现
2.5.6 Bean的依赖检查
2.5.7 Bean对IoC容器的感知
2.6 小结
第3章 Spring AOP的实现
3.1 Spring AOP概述
3.1.1 AOP概念回顾
3.1.2 Advice通知
3.1.3 Pointcut切点
3.1.4 Advisor通知器
3.2 Spring AOP的设计与实现
3.2.1 JVM的动态特性
3.2.2 Spring AOP的设计分析
3.2.3 Spring AOP的应用场景
3.3 建立AopProxy对象
3.3.1 设计原理
3.3.2 配置ProxyFactoryBean
3.3.3 ProxyFactoryBean生成AopProxy对象
3.3.4 JDK生成AopProxy对象
3.3.5 CGLIB生成AopProxy对象
3.4 Spring AOP拦截器调用的实现
3.4.1 设计原理
3.4.2 JdkDynamicAopProxy的invoke拦截
3.4.3 Cglib2AopProxy的intercept拦截
3.4.4 目标对象方法的调用
3.4.5 AOP拦截器链的调用
3.4.6 配置通知器
3.4.7 Advice通知的实现
3.4.8 ProxyFactory实现AOP
3.5 Spring AOP的高级特性
3.6 小结
第二部分 Spring组件实现篇
第4章 Spring MVC与Web环境
4.1 Spring MVC概述
4.2 Web环境中的Spring MVC
4.3 上下文在Web容器中的启动
4.3.1 IoC容器启动的基本过程
4.3.2 Web容器中的上下文设计
4.3.3 ContextLoader的设计与实现
4.4 Spring MVC的设计与实现
4.4.1 Spring MVC的应用场景
4.4.2 Spring MVC设计概览
4.4.3 DispatcherServlet的启动和初始化
4.4.4 MVC处理HTTP分发请求
4.5 Spring MVC视图的呈现
4.5.1 DispatcherServlet视图呈现的设计
4.5.2 JSP视图的实现
4.5.3 ExcelView的实现
4.5.4 PDF视图的实现
4.6 小结
第5章 数据库操作组件的实现
5.1 Spring JDBC的设计与实现
5.1.1 应用场景
5.1.2 设计概要
5.2 Spring JDBC中模板类的设计与实现
5.2.1 设计原理
5.2.2 JdbcTemplate的基本使用
5.2.3 JdbcTemplate的execute实现
5.2.4 JdbcTemplate的query实现
5.2.5 使用数据库Connection
5.3 Spring JDBC中RDBMS操作对象的实现
5.3.1 SqlQuery的实现
5.3.2 SqlUpdate的实现
5.3.3 SqlFunction
5.4 Spring ORM的设计与实现
5.4.1 应用场景
5.4.2 设计概要
5.5 Spring驱动Hibernate的设计与实现
5.5.1 设计原理
5.5.2 Hibernate的SessionFactory
5.5.3 HibernateTemplate的实现
5.5.4 Session的管理
5.6 Spring驱动iBatis的设计与实现
5.6.1 设计原理
5.6.2 创建SqlMapClient
5.6.3 SqlMapClientTemplate的实现
5.7 小结
第6章 Spring事务处理的实现
6.1 Spring与事务处理
6.2 Spring事务处理的设计概览
6.3 Spring事务处理的应用场景
6.4 Spring声明式事务处理
6.4.1 设计原理与基本过程
6.4.2 实现分析
6.5 Spring事务处理的设计与实现
6.5.1 Spring事务处理的编程式使用
6.5.2 事务的创建
6.5.3 事务的挂起
6.5.4 事务的提交
6.5.5 事务的回滚
6.6 Spring事务处理器的设计与实现
6.6.1 Spring事务处理的应用场景
6.6.2 DataSourceTransactionManager的实现
6.6.3 HibernateTransactionManager的实现
6.7 小结
第7章 Spring远端调用的实现
7.1 Spring远端调用的应用场景
7.2 Spring远端调用的设计概览
7.3 Spring远端调用的实现
7.3.1 Spring HTTP调用器的实现
7.3.2 Spring Hession/Burlap的实现原理
7.3.3 Spring RMI的实现
7.4 小结
第三部分 Spring应用实现篇
第8章 安全框架ACEGI的设计与实现
8.1 Spring ACEGI安全框架概述
8.1.1 概述
8.1.2 设计原理与基本实现过程
8.1.3 ACEGI的Bean配置
8.2 配置Spring ACEGI
8.3 ACEGI的Web过滤器实现
8.4 ACEGI验证器的实现
8.4.1 AuthenticationManager的authenticate
8.4.2 DaoAuthenticationProvider的实现
8.4.3 读取数据库用户信息
8.4.4 完成用户信息的对比验证
8.5 ACEGI授权器的实现
8.5.1 与Web环境的接口FilterSecurityInterceptor
8.5.2 授权器的实现
8.5.3 投票器的实现
8.6 小结
第9章 Spring DM模块的设计与实现
9.1 Spring DM模块的应用场景
9.2 Spring DM的应用过程
9.3 Spring DM设计与实现
9.4 小结
第10章 Spring Flex的设计与实现
10.1 Spring Flex模块的应用场景
10.2 Spring Flex的应用过程
10.3 Spring Flex的设计与实现
10.4 小结
附录A Spring项目的源代码环境
附录B 构建Spring项目的包
附录C 使用Spring IDE
附录D Spring Pet Clinic应用实例
第1章 Spring的设计理念和整体架构
1.1 Spring的各个子项目
打开Spring社区网站http://www.springsource.org,我们可以看到围绕Spring核心构建出的一个丰富的平台生态系统。在这个平台生态系统中,除Spring本身,还有许多值得注意的子项目。对Spring应用开发者来说,了解这些子项目,可以更好地使用Spring,或者说,可以通过阅读这些子项目的实现代码,更深入地了解Spring的设计架构和实现原理。这里将会对Spring的各个子项目进行简要的介绍。首先,在SpringSource的官方社区网站中单击Project链接,这时就可以看到Projects下拉列表中列出的各个子项目的项目链接,如图1—1所示。
……
正如当初所预料的,本书的第1版大获成功,不仅获得了良好的口碑,而且也取得了喜人的销售成绩,堪称Spring图书领域的里程碑著作。在改版之前,作者收集了大量读者对第1版的反馈,不仅改进了第1版中存在的不足,而且还在组织结构和写作方式进行了优化。更为重要的是,第2版增加了大量新的内容,使本书的内容更丰富、更深入。相信第2版会比第1版更值得期待。强烈推荐!
——专业Spring开发者社区
本书及时版热销的事实有力地证明了这的确是一本值得所有Spring开发者反复研读的书。它以源代码分析为手段,对Spring的架构原理和设计思想进行了地剖析,不仅能让我们更深入、更彻底地认识Spring,领略Spring的架构之美和设计之美,更重要的是,它将提升我们的Spring开发技能。
——Spring中文用户组
spring非常强大,如果你要学项目经验,读spring源码是必须的,那么这本书是必须买的
对spring介绍很清楚,适合有点工作经验的人看,许多框架都使用过,但还不熟悉,这本书介绍很清楚
书还好,需要进一步学习spring内部实现的可以参考一下。要有一定的基础
早就听过这本书,终于到手了,大致翻看了一下,很不错
分析的还是比较清晰全面的,语言若是能更加生动些就更好了
内容很深刻,适合有一定基础的,入门看这会比较吃力吧。
目录部分有重复装订,开始吓了一跳,想着正版的还能这样。还好后面的页数没有问题,不换了。不知道别人拿到书的是否也是这样。
对没有时间或不知道如何去读Spring源码的程序员来说,这本书是一个不错选择。
书是好书,不过损伤比较明显,最后几十页的边上被撕坏了,不过着急看也没申请退换
适合学习了一顿时间的spring的人看,主要是分析spring的架构,帮助我们自己搭建框架的时候提供参考的功能
大致看了看, 这本书适合呢种对spring了解, 会使用的, 想深入了解内部实现或者是想了解跟多高级功能的人来阅读。 这书要看多遍才能真正领悟。 不建议初学者购买。
内容一般,如果想深入了解Spring的原理的话,最好再考虑考虑
现在的书印的质量越来越差了,价格反而越来越贵了。
还没来得及看,感觉还不错,就是字有点小和密集
本书对Spring技术作了详细的解析,读完后可以作为高手
书不错,送货速度也快,在预计时间内送到。很不错。
只要有基础的人看这书还是不错的,专讲Spring,缺的就是这样的书!
一直都想学习一下Spring的内部结构,今天终于要如愿了。
很好。讲解spring知识,有完全不了解ispring框架的萌妹子,读2,3两章
非常好的一本书,不同于一般的spring书籍只是泛泛的介绍spring的简单使用方法,而是从源代码、项目设计角度全面的分析spring,此书不但可以帮读者掌握spring框架的使用方法,还可以帮助读者深刻的认识spring框架中包含的软件设计思想。好书
Spring,基本搞JavaEE的都会学,那么学习其原理是必须的。知其然,还要知其所以然。
分析的很到位,诠释了Spring框架的核心。技术书籍的好书。
400页也就说说Spring的内幕,而不能讲清楚Spring的原理,书里面代码非常多,入门还可以,研究的话就算了。2版的书可以看看
Spring架构太庞大,这本书正好符合我现在的需要!
对Spring的架构和源码做了比较深入的分析,适合对Spring,设计模式有一定了解,希望能深入学习Spring内核的人
看了一段时间才来评价的,对spring的常用组件分析的很清晰,一直想学习spring的源码,但不知道如何入手,这本书很好的解决了这个问题。如果想学习spring源码,这本书可以作为很好的辅助
书刚拿到,大体的翻阅了一下目录和前2章,发现该书对Spring的总结和作者对Spring的认知度有相当的高度,非常值得一看,说的内容也比较全面,是一本不可多得的好书!