目录



第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