第1部分 核心实现 2
第1章Spring整体架构和环境搭建 2
1.1 Spring的整体架构 2
1.2环境搭建 4
1.2.1源码链接获取 5
1.2.2源码下载及IDEA导入 6
1.3 cglib和objenesis的编译错误解决 9
1.3.1问题发现及原因 9
1.3.2问题解决 9
1.4 AspectJ编译问题解决 10
1.4.1问题发现 10
1.4.2问题原因 12
1.4.3问题解决 13
第2章 容器的基本实现 19
2.1容器基本用法 19
2.2功能分析 20
2.3工程搭建 21
2.4 Spring的结构组成 22
2.4.1 beans包的层级结构 22
2.4.2核心类介绍 23
2.5容器的基础XmlBeanFactory 26
2.5.1配置文件封装 27
2.5.2加载Bean 30
2.6获取XML的验证模式 33
2.6.1 DTD与XSD区别 33
2.6.2验证模式的读取 35
2.7获取Document 37
2.8解析及注册BeanDefinitions 40
2.8.1 profile属性的使用 42
2.8.2解析并注册BeanDefinition 42
第3章 默认标签的解析 44
3.1 bean标签的解析及注册 44
3.1.1解析BeanDefinition 46
3.1.2 AbstractBeanDefinition属性 64
3.1.3解析默认标签中的自定义标签元素 67
3.1.4注册解析的BeanDefinition 69
3.1.5通知监听器解析及注册完成 72
3.2 alias标签的解析 72
3.3 import标签的解析 73
3.4嵌入式beans标签的解析 76
第4章 自定义标签的解析 77
4.1自定义标签使用 78
4.2自定义标签解析 80
4.2.1获取标签的命名空间 81
4.2.2提取自定义标签处理器 81
4.2.3标签解析 83
第5章bean的加载 86
5.1 FactoryBeau的使用 92
5.2缓存中获取单例bean 93
5.3从bean的实例中获取对象 94
5.4获取单例 98
5.5准备创建bean 100
5.5.1处理override属性 101
5.5.2实例化的前置处理 102
5.6循环依赖 104
5.6.1什么是循环依赖 104
5.6.2 Spring如何解决循环依赖 104
5.7创建bean 108
5.7.1创建bean的实例 111
5.7.2记录创建bean的ObjectFactory 120
5.7.3属性注入 123
5.7.4初始化bean 132
5.7.5注册DisposableBean 136
第6章 容器的功能扩展 137
6.1设置配置路径 138
6.2扩展功能 138
6.3环境准备 140
6.4加载BeanFactory 141
6.4.1定制B eanF actory 143
6.4.2加载BeanDefinition 144
6.5功能扩展 145
6.5.1增加SpEL语言的支持 146
6.5.2增加属性注册编辑器 147
6.5.3添加ApplicationContextAwareProcessor处理器 152
6.5.4设置忽略依赖 154
6.5.5注册依赖 154
6.6 BeanFactory的后处理 154
6.6.1激活注册的BeanFactoryPostProcessor 154
6.6.2注册BeanPostProcessor 160
6.6.3初始化消息资源 163
6.6.4初始化App I icationEventMulticaster 167
6.6.5注册监听器 169
6.7初始化非延迟加载单例 169
6.8 finishRefresh 172
第7章AOP 175
7.1动态AOP使用示例 175
7.2动态AOP自定义标签 177
7.3创建AOP代理 181
7.3.1获取增强器 184
7.3.2寻找匹配的增强器 193
7.3.3创建代理 195
7.4静态AOP使用示例 209
7.5创建AOP静态代理 211
7.5.1 Instrumentation使用 211
7.5.2自定义标签 215
7.5.3织入 217
第2部分 企业应用 222
第8章 数据库连接JDBC 222
8.1 Spring连接数据库程序实现(JDBC) 223
8.2 save/update功能的实现 225
8.2.1基础方法execute 227
8.2.2 Update中的回调函数 231
8.3 query功能的实现 233
8.4 queryForObject 237
第9章 整合MyBatis 239
9.1 MyBatis独立使用 239
9.2 Spring整合MyBatis 243
9.3源码分析 245
9.3.1 sqlSessionFactory创建 245
9.3.2 MapperFactoryBean的创建 249
9.3.3 MapperScannerConfigurer 252
第10章 事务 262
10.1 JDBC方式下的事务使用示例 262
10.2事务自定义标签 265
10.2.1注册InfrastructureAdvisorAutoProxyCreator 265
10.2.2获取对应class/method的增强器 269
10.3事务增强器 276
10.3.1创建事务 279
10.3.2回滚处理 289
10.3.3事务提交 295
第11章SpringMVC 298
11.1 SpringMVC快速体验 298
11.2 ContextLoaderListener 302
11.2.1 ServletContextListener的使用 302
11.2.2 Spring中的ContextLoaderListener 303
11.3 DispatcherServlet 306
11.3.1 servlet的使用 307
11.3.2 DispatcherServlet的初始化 308
11.3.3 WebApplicationContext的初始化 311
11.4 DispatcherServlet的逻辑处理 327
11.4.1 MultipartContent类型的request处理 333
11.4.2根据request信息寻找对应的Handler 333
11.4.3没找到对应的Handler的错误处理 337
11.4.4根据当前Handler寻找对应的HandlerAdapter 338
11.4.5缓存处理 338
11.4.6 HandlerInterceptor的处理 339
11.4.7逻辑处理 340
11.4.8异常视图的处理 341
11.4.9根据视图跳转页面 341
第12章 远程服务 347
12.1 RMI 347
12.1.1使用示例 347
12.1.2服务端实现 349
12.1.3客户端实现 357
12.2 HttpInvoker 362
12.2.1使用示例 362
12.2.2服务端实现 364
12.2.3客户端实现 368
第13章Spring消息 374
13.1 JMS的独立使用 374
13.2 Spring整合ActiveMQ 376
13.3源码分析 378
13.3.1 JmsTemplate 379
13.3.2监听器容器 383
第3部分 Spring Boot 394
第14章Spring Boot体系原理 394
14.1 Spring Boot源码安装 396
14.2第一个Starter 397
14.3探索SpringApplication启动Spring 400
14.3.1 SpringContext创建 401
14.3.2 bean的加载 402
14.3.3 Spring扩展属性的加载 403
14.3.4总结 403
14.4 Starter自动化配置原理 403
14.4.1 spring.factories的加载 404
14.4.2 factories调用时序图 405
14.4.3配置类的解析 407
14.4.4 Componentscan的切入点 410
14.5 Conditional机制实现 413
14.5.1 Conditional使用 413
14.5.2 Conditional原理 415
14.5.3调用切入点 418
14.6属性自动化配置实现 420
14.6.1示例 420
14.6.2原理 422
14.7 Tomcat启动 428