Java开发人员都知道,阅读源码是非常好的学习方式,在我们日常工作中或多或少都会接触一些开源代码, 比如说最常用的Stuts、Hibermate. Spring, 这些源码的普及与应用程度远远超过我们的想象,正因为很多人使用,也在推动着源码不断地完善。这些优秀的源码中有着多年积淀下来的精华,这些精华是非常值得我们学习的,不管我们当前是什么水平,通过反复阅读源码,能力都会有所提升,小到对源码所提供的功能上的使用更加熟练,大到使我们的程序设计更加完美优秀。但是,纵观我们身边的人,能够做到通读源码的真的是少之又少,究其原因,不外乎以下几点。

  • 阅读源码绝对算得上是一件费时费力的工作,需要读者耗费大量的时间去完成。而作为开发人员,毕竟精力有限,实在没办法拿出太多的时间放在源码的阅读上。
  • 源碼的复杂性。任何一款源码经历了多年的发展与提炼,其复杂程度可想而知。当我们阅读源码的时候,大家都知道需要通过工具来跟踪代码的运行,进而去分析程序。但是,当代码过于复杂,环环相扣绕来绕去的时候,跟进了几十个甚至几百个函数后,这时我们已经不知道自己所处的位置了,不得不再重来,但是一次又一次地,最终发现自己根本无法驾驭它,不得不放弃。
  • 有些源码发展多年,会遇到各种各样的问题,并对问题进行了解决,而其中有些问题对于我们来说甚至可以用莫名其妙来修饰,有时候根本想不出会在什么情况下发生。我们查阅各种资料,查询无果后,会失去耐心,最终放弃。

本书完全从开发者的角度去剖析源码,每一章都会提供具有代表性的实例, 并以此为基础进行功能实现的分析,而不是采取开篇就讲解容器怎么实现、AOP怎么实现之类的写法。在描述的过程中,本书尽可能地把问题分解,使用剥洋葱的方式一层一层地将逻辑描述清楚,帮助读者由浅入深地进行学习,并把其中的难点和问题各个击破,而不是企图一下让读者理解一个 复杂的逻辑。

本书从核心实现、企业应用和Spring Boot这3个方面,由浅入深、由易到难地对Spring源码展开了系统的讲解,包括Spring整体架构和环境搭建、容器的基本实现、默认标签的解析、自定义标签的解析、bean的加载、容器的功能扩展、AOP、数据库连接JDBC、整合MyBatis、事务SpringMVC、远程服务、Spring消息、Spring Boot体系原理等内容。

本书不仅介绍了使用Spring框架开发项目必须掌握的核心概念,还指导读者使用Spring框架编写企业级应用,并针对在编写代码的过程中如何优化代码、如何使得代码高效给出了切实可行的建议,从而帮助读者全面提升实战能力。

本书语言简洁,示例丰富,可帮助读者迅速掌握使用Spring进行开发所需的各种技能。本书适合于已具有一定Java编程基础的读者,以及在lava平台下进行各类软件开发的开发人员、测试人员等。

本书结构

本书分为3部分:核心实现,企业应用和Spring Boot。

第1部分:核心实现(第1~7章):是Spring功能的基础,也是企业应用部分的基础,主要对容器以及AOP功能实现做了具体的分析。如果读者之前没有接触过Spring源代码,建议认真阅读这个部分,否则阅读企业应用部分时会比较吃力。

第2部分:企业应用(第8~13章);在核心实现部分的基础上围绕企业应用常用的模块进行讨论,这些模块包括Spring整合JDBC、Spring 整合MyBatis.事务、SpringMVC.远程服务、Spring 消息服务等,旨在帮助读者在日常开发中更加高效地使用Spring。

第3部分:Spring Boot(第14章): 对近期流行的Spring Boot的体系原理进行分析,剥离其神秘的面纱。Spring Boot作为Spring外的一个独立分支,可以说将Spring 的扩展能力应用得出神入化,仔细研读后一定会受益匪浅。

第一部分核心实现

第1章Spring整体架构和环境搭建

  • 1.1 Spring的整体架构
  • 1.2环境措建
  • 1.3 cglib和objenesis的编译错误解决
  • 1.4 AspecU编译问题解决

 

第2章容器的基本实现

  • 2.1容器基本用法
  • 2.2功能分析
  • 2.3工程搭建
  • 2.4 Spring的结构组成
  • 2.5容器的基础XmlBeanFactory
  • 2.6获取XML的验证模式
  • 2.7获取Document
  • 2.8解析及注册BeanDefinitions

 

第3章默认标签的解析

  • 3.1 bean标签的解析及注册
  • 3.2 alias标签的解析
  • 3.3 import标签的解析
  • 3.4嵌入式beans标签的解析

 

第4章自定义标签的解析

  • 4.1自定义标签使用
  • 4.2自定义标签解析

 

第5章bean的加载

  • 5.1 FactoryBean的使用
  • 5.2缓存中获取单例bean
  • 5.3从bean的实例中获取对象
  • 5.4获取单例
  • 5.5准备创建bean
  • 5.6循环依赖
  • 5.7创建bean

 

第6章容器的功能扩展

  • 6.1设置配置路径
  • 6.2扩展功能
  • 6.3环境准备
  • 6.4加载BeanFactory
  • 6.5功能扩展
  • 6.6 BeanFactory的后处理
  • 6.7初始化非延迟加载单例
  • 6.8 finishRefresh

 

第7章AOP

  • 7.1动态AOP使用示例
  • 7.2动态AOP自定义标签
  • 7.3创建AOP代理
  • 7.4静态AOP使用示例
  • 7.5创建AOP静态代理

 

第二部分企业应用

第8章数据库连接JDBC

  • 8.1 Spring连接数据库程序实现(JDBC)
  • 8.2 save/update功能的实现
  • 8.3 query功能的实现
  • 8.4 queryForObject

 

第9章整合MyBatis

  • 9.1 MyBatis独立使用
  • 9.2 Spring整合MyBatis
  • 9.3源码分析

 

第10章事务

  • 10.1 JDBC方式下的事务使用示例
  • 10.2事务自定义标签
  • 10.3事务增强器

 

第11章SpringMVC

  • 11.1 SpringMVC快速体验
  • 11.2 ContextLloaderListener
  • 11.3 DispatcherServlet
  • 11.4 DispatcherServlet的逻辑处理

 

第12章远程服务

  • 12.1 RMI
  • 12.2 Httplnvoker

 

第13章Spring消息

  • 13.1 JMS的独立使用
  • 13.2 Sring整合AtiveMQ
  • 13.3源码分析

 

第三部分Spring Boot

第14章Spring Boot体系原理

  • 14.1 SpringBoot源码安装
  • 14.2第一个Starter
  • 14.3探索SpringApplication启动Spring
  • 14.4 Starter自动化配置原理
  • 14.5 Conditional机制实现
  • 14.6属性自动化配置实现
  • 14.7 Tomcat启动

 

由于文档的内容太多,所以只截取了部分内容展示,有想获取完整PDF文档的朋友看我主页哦