内容简介
第1部分 入门和技术基础
第1章 认识SSM框架和Redis
1.1 Spring框架
1.1.1 Spring IoC简介
1.1.2 Spring AOP
1.2 MyBatis简介
1.2.1 Hibernate简介
1.2.2 MyBatis
1.2.3 Hibernate和MyBatis的区别
1.3 Spring MVC简介
1.4 最流行的NoSQL——Redis
1.5 SSM+Redis结构框图及概述
第2章 Java设计模式
2.1 Java反射技术
2.1.1 通过反射构建对象
2.1.2 反射方法
2.1.3 实例
2.2 动态代理模式和责任链模式
2.2.1 JDK动态代理
2.2.2 CGLIB动态代理
2.2.3 拦截器
2.2.4 责任链模式
2.3 观察者(Observer)模式
2.3.1 概述
2.3.2 实例
2.4 工厂模式和抽象工厂模式
2.4.1 普通工厂(Simple Factory)模式
2.4.2 抽象工厂(Abstract Factory)模式
2.5 建造者(Builder)模式
2.5.1 概述
2.5.2 Builder模式实例
2.6 总结
第2部分 互联网持久框架——MyBatis
第3章 认识MyBatis核心组件
3.1 持久层的概念和MyBatis的特点
3.2 准备MyBatis环境
3.3 MyBatis的核心组件
3.4 SqlSessionFactory(工厂接口)
3.4.1 使用XML构建SqlSessionFactory
3.4.2 使用代码创建SqlSessionFactory
3.5 SqlSession
3.6 映射器
3.6.1 用XML实现映射器
3.6.2 注解实现映射器
3.6.3 SqlSession发送SQL
3.6.4 用Mapper接口发送SQL
3.6.5 对比两种发送SQL方式
3.7 生命周期
3.7.1 SqlSessionFactoryBuilder
3.7.2 SqlSessionFactory
3.7.3 SqlSession
3.7.4 Mapper
3.8 实例
第4章 MyBatis配置
4.1 概述
4.2 properties属性
4.2.1 property子元素
4.2.2 使用properties文件
4.2.3 使用程序传递方式传递参数
4.2.4 总结
4.3 settings设置
4.4 typeAliases别名
4.4.1 系统定义别名
4.4.2 自定义别名
4.5 typeHandler类型转换器
4.5.1 系统定义的typeHandler
4.5.2 自定义typeHandler
4.5.3 枚举typeHandler
4.5.4 文件操作
4.6 ObjectFactory(对象工厂)
4.7 插件
4.8 environments(运行环境)
4.8.1 transactionManager(事务管理器)
4.8.2 environment数据源环境
4.9 databaseIdProvider数据库厂商标识
4.9.1 使用系统默认的databaseIdProvider
4.9.2 不使用系统规则
4.10 引入映射器的方法
第5章 映射器
5.1 概述
5.2 select元素——查询语句
5.2.1 简单的select元素的应用
5.2.2 自动映射和驼峰映射
5.2.3 传递多个参数
5.2.4 使用resultMap映射结果集
5.2.5 分页参数RowBounds
5.3 insert元素——插入语句
5.3.1 概述
5.3.2 简单的insert语句的应用
5.3.3 主键回填
5.3.4 自定义主键
5.4 update元素和delete元素
5.5 sql元素
5.6 参数
5.6.1 概述
5.6.2 存储过程参数支持
5.6.3 特殊字符串的替换和处理(#和$)
5.7 resultMap元素
5.7.1 resultMap元素的构成
5.7.2 使用map存储结果集
5.7.3 使用POJO存储结果集
5.8 级联
5.8.1 MyBatis中的级联
5.8.2 建立POJO
5.8.3 配置映射文件
5.8.4 N+1问题
5.8.5 延迟加载
5.8.6 另一种级联
5.8.7 多对多级联
5.9 缓存
5.9.1 一级缓存和二级缓存
5.9.2 缓存配置项、自定义和引用
5.10 存储过程
5.10.1 IN和OUT参数存储过程
5.10.2 游标的使用
第6章 动态SQL
6.1 概述
6.2 if元素
6.3 choose、when、otherwise元素
6.4 trim、where、set元素
6.5 foreach元素
6.6 用test的属性判断字符串
6.7 bind元素
第7章 MyBatis的解析和运行原理
7.1 构建SqlSessionFactory过程
7.1.1 构建Configuration
7.1.2 构建映射器的内部组成
7.1.3 构建SqlSessionFactory
7.2 SqlSession运行过程
7.2.1 映射器(Mapper)的动态代理
7.2.2 SqlSession下的四大对象
7.2.3 SqlSession运行总结
第8章 插件
8.1 插件接口
8.2 插件的初始化
8.3 插件的代理和反射设计
8.4 常用的工具类——MetaObject
8.5 插件开发过程和实例
8.5.1 确定需要拦截的签名
8.5.2 实现拦截方法
8.5.3 配置和运行
8.5.4 插件实例——分页插件
8.6 总结
第3部分 Spring基础
第9章 Spring IoC的概念
9.1 Spring的概述
9.2 Spring IoC概述
9.2.1 主动创建对象
9.2.2 被动创建对象
9.2.3 Spring IoC阐述
9.3 Spring IoC容器
9.3.1 Spring IoC容器的设计
9.3.2 Spring IoC容器的初始化和依赖注入
9.3.3 Spring Bean的生命周期
9.4 小结
第10章 装配Spring Bean
10.1 依赖注入的3种方式
10.1.1 构造器注入
10.1.2 使用setter注入
10.1.3 接口注入
10.2 装配Bean概述
10.3 通过XML配置装配Bean
10.3.1 装配简易值
10.3.2 装配集合
10.3.3 命名空间装配
10.4 通过注解装配Bean
10.4.1 使用@Component装配Bean
10.4.2 自动装配——@Autowired
10.4.3 自动装配的歧义性(@Primary和@Qualifier)
10.4.4 装载带有参数的构造方法类
10.4.5 使用@Bean装配Bean
10.4.6 注解自定义Bean的初始化和销毁方法
10.5 装配的混合使用
10.6 使用Profile
10.6.1 使用注解@Profile配置
10.6.2 使用XML定义Profile
10.6.3 启动Profile
10.7 加载属性(properties)文件
10.7.1 使用注解方式加载属性文件
10.7.2 使用XML方式加载属性文件
10.8 条件化装配Bean
10.9 Bean的作用域
10.10 使用Spring表达式(Spring EL)
10.10.1 Spring EL相关的类
10.10.2 Bean的属性和方法
10.10.3 使用类的静态常量和方法
10.10.4 Spring EL运算
第11章 面向切面编程
11.1 一个简单的约定游戏
11.1.1 约定规则
11.1.2 读者的代码
11.1.3 笔者的代码
11.2 Spring AOP的基本概念
11.2.1 AOP的概念和使用原因
11.2.2 面向切面编程的术语
11.2.3 Spring对AOP的支持
11.3 使用@AspectJ注解开发Spring AOP
11.3.1 选择连接点
11.3.2 创建切面
11.3.3 定义切点
11.3.4 测试AOP
11.3.5 环绕通知
11.3.6 织入
11.3.7 给通知传递参数
11.3.8 引入
11.4 使用XML配置开发Spring AOP
11.4.1 前置通知、后置通知、返回通知和异常通知
11.4.2 环绕通知
11.4.3 给通知传递参数
11.4.4 引入
11.5 经典Spring AOP应用程序
11.6 多个切面
11.7 小结
第12章 Spring和数据库编程
12.1 传统的JDBC代码的弊端
12.2 配置数据库资源
12.2.1 使用简单数据库配置
12.2.2 使用第三方数据库连接池
12.2.3 使用JNDI数据库连接池
12.3 JDBC代码失控的解决方案——jdbcTemplate
12.3.1 jdbcTemplate的增、删、查、改
12.3.2 执行多条SQL
12.3.3 jdbcTemplate的源码分析
12.4 MyBatis-Spring项目
12.4.1 配置SqlSessionFactoryBean
12.4.2 SqlSessionTemplate组件
12.4.3 配置MapperFactoryBean
12.4.4 配置MapperScannerConfigurer
12.4.5 测试Spring+MyBatis
第13章 深入Spring数据库事务管理
13.1 Spring数据库事务管理器的设计
13.1.1 配置事务管理器
13.1.2 用Java配置方式实现Spring数据库事务
13.2 编程式事务
13.3 声明式事务
13.3.1 Transactional的配置项
13.3.2 使用XML进行配置事务管理器
13.3.3 事务定义器
13.3.4 声明式事务的约定流程
13.4 数据库的相关知识
13.4.1 数据库事务ACID特性
13.4.2 丢失更新
13.4.3 隔离级别
13.5 选择隔离级别和传播行为
13.5.1 选择隔离级别
13.5.2 传播行为
13.6 在Spring+MyBatis组合中使用事务
13.7 @Transactional的自调用失效问题
13.8 典型错误用法的剖析
13.8.1 错误使用Service
13.8.2 过长时间占用事务
13.8.3 错误捕捉异常
第4部分 Spring MVC框架
第14章 Spring MVC的初始化和流程
14.1 MVC设计概述
14.1.1 Spring MVC的架构
14.1.2 Spring MVC组件与流程
14.1.3 Spring MVC入门的实例
14.2 Spring MVC初始化
14.2.1 初始化Spring IoC上下文
14.2.2 初始化映射请求上下文
14.2.3 使用注解配置方式初始化
14.3 Spring MVC开发流程详解
14.3.1 配置@RequestMapping
14.3.2 控制器的开发
14.3.3 视图渲染
14.4 小结
第15章 深入Spring MVC组件开发
15.1 控制器接收各类请求参数
15.1.1 接收普通请求参数
15.1.2 使用@RequestParam注解获取参数
15.1.3 使用URL传递参数
15.1.4 传递JSON参数
15.1.5 接收列表数据和表单序列化
15.2 重定向
15.3 保存并获取属性参数
15.3.1 注解@RequestAttribute
15.3.2 注解@SessionAttribute和注解@SessionAttributes
15.3.3 注解@CookieValue和注解@RequestHeader
15.4 拦截器
15.4.1 拦截器的定义
15.4.2 拦截器的执行流程
15.4.3 开发拦截器
15.4.4 多个拦截器执行的顺序
15.5 验证表单
15.5.1 使用JSR 303注解验证输入内容
15.5.2 使用验证器
15.6 数据模型
15.7 视图和视图解析器
15.7.1 视图
15.7.2 视图解析器
15.7.3 实例:Excel视图的使用
15.8 上传文件
15.8.1 MultipartResolver概述
15.8.2 提交上传文件表单
第16章 Spring MVC高级应用
16.1 Spring MVC的数据转换和格式化
16.1.1 HttpMessageConverter和JSON消息转换器
16.1.2 一对一转换器(Converter)
16.1.3 数组和集合转换器GenericConverter
16.1.4 使用格式化器(Formatter)
16.2 为控制器添加通知
16.3 处理异常
16.4 国际化
16.4.1 概述
16.4.2 MessageSource接口
16.4.3 CookieLocaleResolver和SessionLocaleResolver
16.4.4 国际化拦截器(LocaleChangeInterceptor)
16.4.5 开发国际化
第5部分 Redis应用
第17章 Redis概述
17.1 Redis在Java Web中的应用
17.1.1 缓存
17.1.2 高速读/写场合
17.2 Redis基本安装和使用
17.2.1 在Windows下安装Redis
17.2.2 在Linux下安装Redis
17.3 Redis的Java API
17.3.1 在Java程序中使用Redis
17.3.2 在Spring中使用Redis
17.4 简介Redis的6种数据类型
17.5 Redis和数据库的异同
第18章 Redis数据结构常用命令
18.1 Redis数据结构——字符串
18.2 Redis数据结构——哈希
18.3 Redis数据结构——链表(linked-list)
18.4 Redis数据结构——集合
18.5 Redis数据结构——有序集合
18.5.1 Redis基础命令
18.5.2 spring-data-redis对有序集合的封装
18.5.3 使用Spring操作有序集合
18.6 基数——HyperLogLog
18.7 小结
第19章 Redis的一些常用技术
19.1 Redis的基础事务
19.2 探索Redis事务回滚
19.3 使用watch命令监控事务
19.4 流水线(pipelined)
19.5 发布订阅
19.6 超时命令
19.7 使用Lua语言
19.7.1 执行输入Lua程序代码
19.7.2 执行Lua文件
19.8 小结
第20章 Redis配置
20.1 Redis基础配置文件
20.2 Redis备份(持久化)
20.3 Redis内存回收策略
20.4 复制
20.4.1 主从同步基础概念
20.4.2 Redis主从同步配置
20.4.3 Redis主从同步的过程
20.5 哨兵(Sentinel)模式
20.5.1 哨兵模式概述
20.5.2 搭建哨兵模式
20.5.3 在Java中使用哨兵模式
20.5.4 哨兵模式的其他配置项
第21章 Spring缓存机制和Redis的结合
21.1 Redis和数据库的结合
21.1.1 Redis和数据库读操作
21.1.2 Redis和数据库写操作
21.2 使用Spring缓存机制整合Redis
21.2.1 准备测试环境
21.2.2 Spring的缓存管理器
21.2.3 缓存注解简介
21.2.4 注解@Cacheable和@CachePut
21.2.5 注解@CacheEvict
21.2.6 不适用缓存的方法
21.2.7 自调用失效问题
21.3 RedisTemplate的实例
第6部分 SSM框架+Redis实践应用
第22章 高并发业务
22.1 互联系统应用架构基础分析
22.2 高并发系统的分析和设计
22.2.1 有效请求和无效请求
22.2.2 系统设计
22.2.3 数据库设计
22.2.4 动静分离技术
22.2.5 锁和高并发
22.3 搭建抢红包开发环境和超发现象
22.3.1 搭建Service层和DAO层
22.3.2 使用全注解搭建SSM开发环境
22.3.3 开发控制器和超发现象测试
22.4 悲观锁
22.5 乐观锁
22.5.1 CAS原理概述
22.5.2 ABA问题
22.5.3 乐观锁实现抢红包业务
22.5.4 乐观锁重入机制
22.6 使用Redis实现抢红包
22.6.1 使用注解方式配置Redis
22.6.2 数据存储设计
22.6.3 使用Redis实现抢红包
22.7 各类方式的优缺点
附录A 数据库表模型
附录B DispatcherServlet流程源码分析
附录C JSTL常用标签
附录D spring data redis项目分析