前言
第1篇 Spring的重要特性解析
第1章 准备活动
1.1 相关说明和约定
1.2 新建Spring Boot项目
1.2.1 初始化页
1.2.2 配置微调
1.2.3 自由编码
1.3 本章小结
第2章 Spring运行时的核心组成——Bean
2.1 控制反转(IoC)和依赖注入(DI)简介
2.1.1 IoC和DI的思想
2.1.2 Spring中的IoC容器
2.2 Bean的获取
2.2.1 常规依赖注入
2.2.2 依赖查找
2.3 Bean的创建和初始化
2.3.1 模式注解和注解扫描
2.3.2 配置
2.3.3 BeanDefinition
2.3.4 调用接口创建Bean
2.3.5 @Import注解
2.3.6 SPI机制
2.3.7 FactoryBean
2.3.8 与初始化相关的注解和接口
2.4 Bean的诞生过程
2.4.1 BeanFactory与DI、DL的关系
2.4.2 DL的底层逻辑
2.4.3 原始Bean的诞生
2.4.4 DI的底层逻辑和批量注入时的排序机制
2.4.5 Bean的初始化逻辑
2.4.6 SmartInitializingSingleton的运行时机
2.5 Bean相关的其他重要内容
2.5.1 Spring Boot的主启动流程
2.5.2 SPI机制实现原理简介
2.5.3 由Source载入BeanDefinition的过程
2.5.4 解析配置的过程
2.6 本章小结
第3章 属性值
3.1 常用的值获取
3.2 使用第三方工具注入值
3.2.1 静态变量与实例变量的统一注入
3.2.2 注入至final或static final变量
3.3 @Value注入的底层逻辑简析
3.3.1 值查找的底层逻辑
3.3.2 值注入的底层逻辑
3.4 本章小结
第4章 动态代理
4.1 代理的相关介绍
4.1.1 静态代理
4.1.2 使用动态代理
4.1.3 动态代理实现原理简介
4.2 注解的底层实现
4.2.1 编译时处理Retention
4.2.2 注解的“真实身份”和属性的类型约束
4.3 本章小结
第2篇 综合实战
第5章 框架编写的一些原则
5.1 面向技术的原则
5.1.1 编程对象的转换
5.1.2 JDK的版本选择
5.1.3 第三方组件的取舍
5.1.4 pom文件的依赖配置
5.1.5 框架中可以使用的工具类
5.2 面向用户的原则
5.2.1 提供给用户的扩展点
5.2.2 提供默认实现
5.2.3 降级方案
5.2.4 扩展点的取舍
5.3 软件设计之SOLID原则
5.3.1 单一职责原则(Single Responsibility Principle)
5.3.2 开闭原则(Open Closed Principle)
5.3.3 里氏替换原则(Liskov Substitution Principle)
5.3.4 接口隔离原则(Interface Segregation Principle)
5.3.5 依赖倒置原则(Dependence Inversion Principle)
5.4 本章小结
第6章 统一的Controller——UniController
6.1 问题起源
6.2 解析问题并选定方案
6.3 框架设计
6.3.1 UniController支持的功能和方法形参设计
6.3.2 DAO接口的标记
6.4 具体编码实现
6.4.1 工程结构
6.4.2 JDK约定和依赖选择
6.4.3 UniController的编码实现
6.4.4 UniService的技术设计
6.4.5 UniService的技术细节
6.5 测试
6.5.1 测试JPA
6.5.2 测试MyBatis
6.6 本章小结
第7章 仿JPA:通过接口方法名执行逻辑——Calculator
7.1 需求场景和准备
7.1.1 方法名约定和自定义运算
7.1.2 定义身份注解和接口
7.1.3 定义@Enable×××注解
7.2 具体编写实现
7.2.1 解析方法名和计算表达式
7.2.2 编写动态代理之InvocationHandler实现类
7.2.3 计算拦截器CalculateInterceptor
7.2.4 启动时扫描用的ImportBeanDefinitionRegistrar
7.3 测试Calculator框架
7.3.1 测试模块的pom文件
7.3.2 编写Calculator用户组件
7.3.3 编写拦截器CalculateInterceptor
7.3.4 编写测试代码
7.4 推广
7.5 本章小结
第8章 自编类Spring框架及生态——Universe
8.1 框架命名
8.2 Universe核心模块
8.2.1 核心注解
8.2.2 核心接口
8.2.3 大纲及基础工具
8.2.4 编码实现——基本说明和StarDefinition
8.2.5 编码实现——StarDefinitionHolder接口
8.2.6 编码实现——StarDataHolder接口
8.2.7 Universe的配套接口
8.2.8 Universe接口及其前置逻辑
8.2.9 Universe接口之getStar
8.2.10 Universe其他方法
8.2.11 Universe的启动流程
8.3 测试Universe
8.3.1 通用测试
8.3.2 独立模块的自动配置
8.3.3
展开