书海网短评: 全面剖析Spring源码,方便读者根据业务需求进行更改或扩展所有知识点秉承由浅入深、由易到难的讲解架构采用抽丝剥茧的方式来阐述复杂的逻辑,降低理解难度Spring是一个源码开放的轻量级Java开发框
第1部分 核心实现第 1章Spring整体架构和环境搭建 21.1 Spring的整体架构 21.2 环境搭建 41.2.1 源码链接获取 51.2.2 源码下载及IDEA导入 61.3 cglib和objenesis的编译错误解决 91.3.1 问题发现及原因 91.3.2 问题解决 91.4 AspectJ编译问题解决 101.4.1 问题发现 101.4.2 问题原因 121.4.3 问题解决 13第 2章容器的基本实现 192.1 容器基本用法 192.2 功能分析 202.3 工程搭建 212.4 Spring的结构组成 222.4.1 beans包的层级结构 222.4.2 核心类介绍 232.5 容器的基础XmlBeanFactory 262.5.1 配置文件封装 272.5.2 加载Bean 302.6 获取XML的验证模式 332.6.1 DTD与XSD区别 332.6.2 验证模式的读取 352.7 获取Document 372.8 解析及注册BeanDefinitions 402.8.1 profile属性的使用 422.8.2 解析并注册BeanDefinition 42第3章 默认标签的解析 443.1 bean标签的解析及注册 443.1.1 解析BeanDefinition 463.1.2 AbstractBeanDefinition属性 643.1.3 解析默认标签中的自定义标签元素 673.1.4 注册解析的BeanDefinition 693.1.5 通知监听器解析及注册完成 723.2 alias标签的解析 723.3 import标签的解析 733.4 嵌入式beans标签的解析 76第4章 自定义标签的解析 774.1 自定义标签使用 784.2 自定义标签解析 804.2.1 获取标签的命名空间 814.2.2 提取自定义标签处理器 814.2.3 标签解析 83第5章 bean的加载 865.1 FactoryBean的使用 925.2 缓存中获取单例bean 935.3 从bean的实例中获取对象 945.4 获取单例 985.5 准备创建bean 1005.5.1 处理override属性 1015.5.2 实例化的前置处理 1025.6 循环依赖 1045.6.1 什么是循环依赖 1045.6.2 Spring如何解决循环依赖 1045.7 创建bean 1085.7.1 创建bean的实例 1115.7.2 记录创建bean的ObjectFactory 1205.7.3 属性注入 1235.7.4 初始化bean 1325.7.5 注册DisposableBean 136第6章 容器的功能扩展 1376.1 设置配置路径 1386.2 扩展功能 1386.3 环境准备 1406.4 加载BeanFactory 1416.4.1 定制BeanFactory 1436.4.2 加载BeanDefinition 1446.5 功能扩展 1456.5.1 增加SpEL语言的支持 1466.5.2 增加属性注册编辑器 1476.5.3 添加ApplicationContextAwareProcessor处理器 1526.5.4 设置忽略依赖 1546.5.5 注册依赖 1546.6 BeanFactory的后处理 1546.6.1 激活注册的BeanFactoryPostProcessor 1546.6.2 注册BeanPostProcessor 1606.6.3 初始化消息资源 1636.6.4 初始化ApplicationEventMulticaster 1676.6.5 注册监听器 1696.7 初始化非延迟加载单例 1696.8 finishRefresh 172第7章 AOP 1757.1 动态AOP使用示例 1757.2 动态AOP自定义标签 1777.3 创建AOP代理 1817.3.1 获取增强器 1847.3.2 寻找匹配的增强器 1937.3.3 创建代理 1957.4 静态AOP使用示例 2097.5 创建AOP静态代理 2117.5.1 Instrumentation使用 2117.5.2 自定义标签 2157.5.3 织入 217第 2部分企业应用第8章 数据库连接JDBC 2228.1 Spring连接数据库程序实现(JDBC) 2238.2 save/update功能的实现 2258.2.1 基础方法execute 2278.2.2 Update中的回调函数 2318.3 query功能的实现 2338.4 queryForObject 237第9章 整合MyBatis 2399.1 MyBatis独立使用 2399.2 Spring整合MyBatis 2439.3 源码分析 2459.3.1 sqlSessionFactory创建 2459.3.2 MapperFactoryBean的创建 2499.3.3 MapperScannerConfigurer 252第 10章事务 26210.1 JDBC方式下的事务使用示例 26210.2 事务自定义标签 26510.2.1 注册InfrastructureAdvisorAutoProxyCreator 26510.2.2 获取对应class/method的增强器 26910.3 事务增强器 27610.3.1 创建事务 27910.3.2 回滚处理 28910.3.3 事务提交 295第 11章SpringMVC 29811.1 SpringMVC快速体验 29811.2 ContextLoaderListener 30211.2.1 ServletContextListener的使用 30211.2.2 Spring中的ContextLoaderListener 30311.3 DispatcherServlet 30611.3.1 servlet的使用 30711.3.2 DispatcherServlet的初始化 30811.3.3 WebApplicationContext的初始化 31111.4 DispatcherServlet的逻辑处理 32711.4.1 MultipartContent类型的request处理 33311.4.2 根据request信息寻找对应的Handler 33311.4.3 没找到对应的Handler的错误处理 33711.4.4 根据当前Handler寻找对应的HandlerAdapter 33811.4.5 缓存处理 33811.4.6 HandlerInterceptor的处理 33911.4.7 逻辑处理 34011.4.8 异常视图的处理 34111.4.9 根据视图跳转页面 341第 12章远程服务 34712.1 RMI 34712.1.1 使用示例 34712.1.2 服务端实现 34912.1.3 客户端实现 35712.2 HttpInvoker 36212.2.1 使用示例 36212.2.2 服务端实现 36412.2.3 客户端实现 368第 13章Spring消息 37413.1 JMS的独立使用 37413.2 Spring整合ActiveMQ 37613.3 源码分析 37813.3.1 JmsTemplate 37913.3.2 监听器容器 383第3部分 SpringBoot第 14章SpringBoot体系原理 39414.1 SpringBoot源码安装 39614.2 第一个Starter 39714.3 探索SpringApplication启动Spring 40014.3.1 SpringContext创建 40114.3.2 bean的加载 40214.3.3 Spring扩展属性的加载 40314.3.4 总结 40314.4 Starter自动化配置原理 40314.4.1 spring.factories的加载 40414.4.2 factories调用时序图 40514.4.3 配置类的解析 40714.4.4 Componentscan的切入点 41014.5 Conditional机制实现 41314.5.1 Conditional使用 41314.5.2 Conditional原理 41514.5.3 调用切入点 41814.6 属性自动化配置实现 42014.6.1 示例 42014.6.2 原理 42214.7 Tomcat启动 428