第1章 Spring入门 1
1.1 Rod Johson与Spring 1
1.2 Spring与Jakarta EE的关系 2
1.2.1 Java EE与Jakarta EE 2
1.2.2 Jakarta EE是什么 3
1.2.3 Jakarta EE 9架构 3
1.2.4 Spring与Jakarta EE 4
1.3 Spring Project介绍 5
1.3.1 Spring官网 5
1.3.2 Spring热门Project 6
1.4 Spring Framework历史版本比较 6
1.4.1 Spring Framework资料下载 6
1.4.2 Spring 6.x对比Spring 5.x的变化 6
1.4.3 Spring 6.x的趋势 7
1.5 Spring Framework功能总览 7
1.5.1 核心功能 7
1.5.2 数据层整合 7
1.5.3 Web层技术 7
1.5.4 外部系统集成 8
1.6 Spring Framework模块组成 8
1.6.1 模块架构图 8
1.6.2 各模块的职责 8
第2章 Spring IoC 10
2.1 IoC与DI的概念 10
2.2 IoC容器与ApplicationContext 10
2.3 IoC容器的创建与使用 11
2.3.1 创建IoC容器实例 11
2.3.2 从IoC容器读取Bean 13
2.3.3 案例:hello入门 13
2.4 Bean管理 14
2.4.1 BeanDefinition 15
2.4.2 属性id和name的区别 16
2.4.3 创建Bean对象 16
2.5 案例:HelloSpringIoC 20
2.5.1 面向接口编程 21
2.5.2 XML 反射实现IoC 22
2.5.3 Spring实现IoC 23
2.6 依赖注入 24
2.6.1 依赖注入介绍 24
2.6.2 项目案例:StaffUser系统与DI 24
2.6.3 构造器注入 28
2.6.4 Set方法注入 31
2.6.5 XML依赖配置详解 33
2.6.6 Autowire注入 40
2.6.7 方法注入 44
2.6.8 依赖注入总结 47
2.7 Bean对象的范围 48
2.7.1 配置Bean的范围 49
2.7.2 singleton和prototype 49
2.7.3 案例:HelloSpringAction 50
2.7.4 Bean的Web应用 52
2.7.5 Bean的依赖 53
2.7.6 Java Bean的属性范围 54
2.8 定制Bean的特性信息 54
2.8.1 Bean的生命周期回调处理 55
2.8.2 Aware接口 59
2.9 IoC容器扩展 60
2.9.1 BeanPostProcessor接口 60
2.9.2 FactoryBean接口 62
2.10 注解配置 64
2.10.1 JSR相关注解 64
2.10.2 Spring相关注解 71
2.11 标准事件与自定义事件 73
2.11.1 标准事件 73
2.11.2 案例:邮件黑名单 73
2.11.3 案例:接收多类型消息 75
2.12 Bean工厂 76
2.12.1 BeanFactory接口 76
2.12.2 HierarchicalBeanFactory接口 76
2.12.3 ListableBeanFactory接口 77
2.12.4 实现类DefaultListableBeanFactory 77
2.12.5 Bean与BeanFactory 78
2.12.6 IoC容器与BeanFactory 78
第3章 面向切面编程 80
3.1 AOP介绍 80
3.1.1 AOP中的专业术语 80
3.1.2 advice的通知类型 81
3.1.3 AOP动态代理选择 81
3.2 @AspectJ支持 82
3.2.1 @AspectJ介绍 82
3.2.2 autoproxying配置 82
3.2.3 声明Aspect 83
3.2.4 声明 Pointcut 83
3.2.5 Pointcut表达式 83
3.2.6 声明advice 85
3.2.7 案例:StaffUser日志管理 88
3.2.8 案例:StaffUser数据库连接管理 89
3.3 基于XML的AOP配置 89
3.3.1 声明Aspect 90
3.3.2 声明Pointcut 90
3.3.3 声明Advice 91
3.3.4 使用Advisor 92
3.3.5 案例:StaffUser日志管理 92
3.3.6 案例:StaffUser数据库连接管理 94
3.4 动态代理机制 94
3.4.1 静态代理 95
3.4.2 JDK动态代理 97
3.4.3 项目案例:自动管理数据库连接 99
3.4.4 项目案例:员工系统的事务管理 102
3.4.5 项目案例:员工系统事务AspectJ方案 107
第4章 Spring整合JDBC 111
4.1 事务分类 111
4.2 Spring事务模型 113
4.3 Spring事务抽象模型 114
4.4 事务与资源管理 116
4.5 Spring声明性事务 117
4.5.1 XML方式管理声明性事务 117
4.5.2 项目案例:StaffUser事务的XML方案 118
4.5.3 JdbcDaoSupport 121
4.5.4 注解管理声明性事务 122
4.5.5 项目案例:StaffUser事务注解方案 123
4.6 Spring编程式事务 124
4.6.1 编程式事务介绍 124
4.6.2 案例:Spring编程式事务新增员工 125
4.7 声明性事务与编程式事务选择 126
4.8 Spring事务传播 126
4.8.1 Propagation.REQUIRED设置 127
4.8.2 Propagation.REQUIRES_NEW设置 131
4.8.3 Propagation.NESTED设置 132
第5章 当当书城Spring整合JDBC 133
5.1 当当书城基本功能 133
5.1.1 项目开发环境 133
5.1.2 表结构设计 133
5.1.3 当当书城原型 134
5.2 Spring整合JDBC实战 137
5.2.1 导包 137
5.2.2 Spring配置文件 138
5.2.3 封装BaseDao 139
5.2.4 封装SpringFactory 140
5.2.5 定义Spring Bean和依赖关系 140
5.2.6 配置声明性事务 140
5.2.7 控制器调用Bean 141
5.2.8 项目部署 141
第6章 Spring Web MVC 142
6.1 Spring Web MVC介绍 142
6.1.1 视图与控制层技术介绍 142
6.1.2 Spring MVC概述 142
6.1.3 Spring MVC特性支持 143
6.2 案例:HelloMVC 144
6.2.1 环境配置 144
6.2.2 Model与控制器 144
6.2.3 MVC架构 145
6.3 案例:HelloSpringmvc入门示例 146
6.3.1 导包 146
6.3.2 配置前端控制器DispatcherServlet 146
6.3.3 核心配置文件 146
6.3.4 编写HelloAction 147
6.3.5 编写视图 147
6.3.6 浏览器测试 147
6.3.7 配置log4j 147
6.4 前端控制器DispatcherServlet 148
6.4.1 Spring MVC架构图 148
6.4.2 DispatcherServlet与IoC容器的关系 149
6.4.3 DispatcherServlet核心功能 150
6.5 DispatcherServlet的工作流程 151
6.5.1 查看源代码 151
6.5.2 断点观察DispatcherServlet运行流程 151
6.5.3 前端控制器的doDispatch方法 153
6.5.4 创建IoC容器 154
6.6 @Controller 156
6.6.1 @Controller的作用域 156
6.6.2 @RequestMapping 157
6.6.3 控制器异步处理 180
6.7 拦截器 182
6.7.1 HandlerMapping 182
6.7.2 案例:非工作时间拒绝服务 183
6.7.3 拦截器运行流程分析 184
6.8 视图解析 185
6.8.1 视图解析的主要接口 185
6.8.2 JSP视图 186
6.8.3 ViewResolver解析视图 187
6.8.4 视图解析器链 187
6.8.5 重定向到视图 188
6.9 使用Flash属性 191
6.10 使用Locale 191
6.10.1 Locale解析器 192
6.10.2 Locale拦截器 193
6.10.3 案例:国际化应用 193
6.11 主题Theme 196
6.12 multipart文件上传 198
6.12.1 Spring multipart介绍 199
6.12.2 案例:图片上传 199
6.13 异常处理 200
6.13.1 HandlerExceptionResolver 200
6.13.2 SimpleMappingExceptionResolver 200
6.13.3 @ExceptionHandler 201
6.13.4 标准异常解析 202
6.14 JSP & JSTL 204
6.14.1 JSP与JSTL介绍 204
6.14.2 Spring MVC基础标签 204
6.14.3 form标签库 205
第7章 当当书城Spring MVC实战 207
7.1 导包 207
7.2 配置web.xml 207
7.3 配置spring-mvc.xml 208
7.4 用户权限校验 209
7.5 书城主页实现 210
7.6 图书详情页实现 210
7.7 用户管理 211
7.7.1 用户登录 211
7.7.2 用户退出 212
7.8 购物车实现 212
7.8.1 购物车设计 212
7.8.2 我的购物车 212
7.8.3 加入购物车 213
7.8.4 移出购物车 213
7.9 用户付款 213
7.9.1 结算 213
7.9.2 付款 215
7.10 图书上架 215
7.11 系统异常设计 217
第8章 MyBatis持久层框架 219
8.1 案例:MyBatis快速入门 219
8.1.1 导包 219
8.1.2 创建SqlSessionFactory单例 219
8.1.3 从SqlSessionFactory获得SqlSession 220
8.1.4 映射接口和映射文件 221
8.1.5 配置映射指向 221
8.1.6 Mapper调用 221
8.1.7 代码测试 221
8.1.8 Log4j跟踪MyBatis 222
8.2 MyBatis原理分析 222
8.2.1 SqlSession与Connection 222
8.2.2 SqlSession的getMapper 223
8.3 MyBatis配置 225
8.3.1 properties属性配置 226
8.3.2 settings配置 227
8.3.3 typeAliases配置 229
8.3.4 typeHandlers 230
8.3.5 objectFactory配置 233
8.3.6 plugins拦截器 235
8.3.7 环境配置 236
8.3.8 databaseIdProvider 241
8.3.9 Mappers配置 242
8.4 Mapper映射XML文件 243
8.4.1 mapper元素 243
8.4.2 select元素 244
8.4.3 insert、update和delete元素 245
8.4.4 项目案例:新增员工 247
8.4.5 项目案例:员工打卡 250
8.4.6 参数处理 253
8.4.7 ResultMap 255
8.4.8 项目案例:员工打卡记录查询 259
8.4.9 缓存 262
8.5 动态SQL 265
8.5.1 判断:if 265
8.5.2 分支:choose, when 267
8.5.3 循环:foreach 268
第9章 Spring整合MyBatis 270
9.1 整合资料下载 270
9.2 导包 270
9.3 Spring配置文件 271
9.4 配置Bean和依赖注入 272
9.5 声明性事务 272
9.5.1 只读事务 273
9.5.2 写操作事务管理 273
第10章 当当书城SSM整合 275
10.1 搭建SSM整合环境 275
10.1.1 导包 275
10.1.2 配置myBatis.xml 275
10.1.3 配置beans.xml 276
10.1.4 Mapper接口与映射文件 276
10.1.5 持久层依赖注入Mapper 277
10.2 MyBatis映射实现 277
10.2.1 主页推荐图书 277
10.2.2 图书详情 278
10.2.3 用户管理 278
10.2.4 购物车 278
10.2.5 用户付款 279
10.2.6 图书上架 281
IV
V