本书从实战入手,通过大量示例介绍了Spring+SpringMVC+MyBatis整合开发的相关内容,提升读者对框架的掌握度和理解度,从而实现对框架会用、用对及精用的目标。本书共18章,分为5篇。第1篇Spring核心框架,涵盖Spring概述、Spring IoC容器初探、Web项目环境搭建与项目创建、Spring IoC容器进阶、基于注解和代码的配置、Spring测试;第2篇Spring MVC框架,涵盖Spring Web MVC概述、数据类型转换、验证与异常处理,以及Spring MVC进阶和测试框架;第3篇数据技术,涵盖数据库与Java数据访问技术、MyBatis基本使用、MyBatis进阶、Spring数据访问与事务管理;第4篇SSM整合开发,涵盖SSM整合概述与SSM整合实例;第5篇高级开发技术,涵盖Spring AOP与MVC拦截器,以及Spring Security框架与多线程。本书适合具备Java基础的SSM初学者和进阶开发人员阅读,也适合Java Web开发工程师阅读;对于探究Spring及Spring Boot框架机制与原理的工程师也具有参考意义。
前言
第1篇 Spring核心框架
第1章 Spring概述2
1.1 Spring的由来与发展2
1.1.1 Java简史3
1.1.2 Spring编年简史5
1.2 Spring的概念及理念6
1.3 Spring框架体系结构7
1.4 Spring生态圈10
1.5 Spring资源与社区12
1.6 Spring综述13
第2章 Spring IoC容器初探14
2.1 Spring IoC容器及相关概念14
2.1.1 组件、框架和容器14
2.1.2 JavaBean、POJO和EJB简介16
2.1.3 IoC与DI简介17
2.1.4 Spring与EJB简介19
2.2 Spring容器初始化20
2.2.1 BeanFactory与ApplicationContext20
2.2.2 ApplicationContext初始化方式21
2.2.3 Spring基于XML的配置文件结构23
2.2.4 Bean的配置方式24
2.2.5 哪些类需要配置成Bean25
2.2.6 容器的关闭25
2.2.7 Spring容器的定义26
2.3 依赖注入与方式26
2.3.1 构造函数注入27
2.3.2 设置值注入28
第3章 Web项目环境搭建与项目创建30
3.1 环境与前置准备30
3.1.1 JDK的下载与安装30
3.1.2 Eclipse的下载与安装32
3.1.3 Tomcat的下载与安装33
3.1.4 MySQL的下载与安装34
3.1.5 Maven的下载与安装35
3.2 基于Maven和Eclipse建立项目36
3.2.1 在Eclipse中创建Maven Web项目37
3.2.2 将Maven创建的Web项目导入Eclipse中38
3.2.3 Eclipse编译器和项目特性修改39
3.3 Spring框架导入与项目目录41
3.3.1 Spring核心包及相关依赖包的导入41
3.3.2 项目目录结构及创建42
3.4 简单的完整实例43
第4章 Spring IoC容器进阶46
4.1 Bean实例化的更多方式46
4.1.1 静态内部类46
4.1.2 静态工厂方法47
4.1.3 实例工厂方法47
4.2 Bean的配置属性48
4.2.1 Bean的作用域配置49
4.2.2 Bean初始化或销毁的生命周期回调50
4.2.3 懒加载Bean51
4.2.4 Bean定义的继承52
4.3 依赖注入的配置53
4.3.1 多个对象的依赖注入53
4.3.2 简单类型的依赖注入55
4.3.3 集合类型的依赖注入58
4.3.4 内部Bean的依赖注入59
4.3.5 Bean方法的替换59
4.3.6 自动装配60
4.4 特殊的依赖配置61
4.4.1 depends-on前置依赖配置61
4.4.2 方法注入—不同作用域Bean的依赖配置62
4.4.3 循环依赖的解决63
4.5 XML配置进阶64
4.5.1 依赖注入配置的简写64
4.5.2 多XML配置文件64
4.6 容器与Bean扩展点65
4.6.1 全局与容器生命周期回调65
4.6.2 容器加载定义扩展—BeanFactoryPostProcessor66
4.6.3 容器扩展点—BeanPostProcessor68
4.6.4 Aware接口—获取容器资源68
4.7 Spring IoC容器综述70
第5章 基于注解和代码的配置73
5.1 Java注解73
5.1.1 Java基本注解73
5.1.2 Java注解标准75
5.2 Spring支持的注解类型与开启方式76
5.2.1 Spring支持的注解类型76
5.2.2 Spring注解功能的开启方式77
5.3 Spring支持的Java标准注解78
5.3.1 @PostConstruct和@PreDestroy78
5.3.2 @Named—组件注解78
5.3.3 @Resource—依赖注入注解79
5.3.4 @Inject—依赖注入79
5.4 Spring容器配置注解80
5.4.1 @Required—依赖项检查80
5.4.2 @Autowired—依赖对象的自动装配81
5.4.3 @Component—组件注解82
5.4.4 @Bean—方法层级的组件注解85
5.5 自动装配的更多介绍86
5.5.1 自动装配的required配置86
5.5.2 自动装配的顺序和选择86
5.5.3 自动装配的使用89
5.6 基于Java代码的配置89
5.6.1 @Configuration——配置类注解90
5.6.2 Java代码配置的容器初始化90
5.6.3 @ComponentScan—组件扫描注解91
5.6.4 @Import—配置类导入注解92
5.7 容器注解汇总92
第6章 Spring测试94
6.1 关于测试94
6.1.1 单元测试95
6.1.2 集成测试97
6.1.3 测试的一些概念97
6.2 Java测试框架98
6.2.1 JUnit单元测试框架98
6.2.2 JUnit批量测试102
6.2.3 JUnit运行器103
6.2.4 JUnit 4与JUnit 5的比较104
6.2.5 TestNG简介及与JUnit的比较105
6.3 基于Spring的测试106
6.3.1 JUnit中加入Spring容器进行测试106
6.3.2 Spring测试模块108
6.3.3 Spring测试模块对单元测试的支持109
6.3.4 Spring测试框架111
6.4 Spring测试注解116
6.4.1 Spring测试专用的注解116
6.4.2 测试支持的标准注解119
6.4.3 基于JUnit 4支持的注解121
6.4.4 基于JUnit Jupiter(JUnit 5)支持的注解123
6.5 测试框架注解汇总125
第2篇 Spring MVC框架
第7章 Spring Web MVC概述128
7.1 HTTP Web基础知识128
7.1.1 HTML与HTTP128
7.1.2 HTTP请求类型129
7.1.3 MIME类型129
7.1.4 状态码130
7.2 Java Web开发131
7.2.1 Servlet技术131
7.2.2 JSP技术138
7.2.3 MVC模式141
7.3 Spring MVC介绍与实例141
7.3.1 Spring MVC框架处理流程142
7.3.2 Spring Web快速Demo实例143
7.4 Spring MVC技术细节146
7.4.1 DispatcherServlet—中央控制器146
7.4.2 HandlerMapping—处理器映射器148
7.4.3 HandlerAdapter—处理器适配器150
7.4.4 视图与视图解析器153
7.5 Spring MVC注解配置155
7.5.1 组件与依赖注解156
7.5.2 请求映射与参数注解156
7.5.3 @ModelAttribute模型属性注解160
7.6 基于代码配置的Spring MVC项目162
7.6.1 Java代码进行Spring MVC的容器配置162
7.6.2 Java代码替代web.xml文件的入口配置163
7.7 MVC注解汇总164
第8章 数据类型的转换、验证与异常处理166
8.1 类型转换166
8.1.1 属性编辑器:PropertyEditor166
8.1.2 转换器服务:ConversionService168
8.1.3 类型转换在容器中的使用173
8.2 数据绑定176
8.2.1 Bean封装器:BeanWrapper176
8.2.2 数据绑定器:DataBinder与WebDataBinder178
8.2.3 绑定器初始化注解:@InitBinder180
8.2.4 HTTP消息转换器:HttpMessageConverter181
8.3 数据验证184
8.3.1 JavaBean标准校验184
8.3.2 Spring核心容器的验证186
8.3.3 Spring MVC容器的验证188
8.3.4 验证器配置及增加自定义验证器189
8.3.5 验证器使用层级及手动调用191
8.4 Spring MVC异常处理192
8.4.1 Controller类层级异常处理:@ExceptionHandler192
8.4.2 全局的异常处理:@ControllerAdvice193
8.4.3 XML配置异常处理194
第9章 Spring MVC进阶195
9.1 静态资源的放行195
9.1.1 配置Servlet处理静态资源196
9.1.2 配置
放行动态资源196
9.1.3 配置
放行动态资源197
9.2 父子容器197
9.2.1 Spring的父子容器197
9.2.2 Spring MVC的父子容器200
9.2.3 Spring MVC父子容器的配置202
9.3 Spring MVC与JSON204
9.3.1 JSON介绍204
9.3.2 Java对JSON的支持206
9.3.3 Spring MVC使用JSON210
9.4 Spring MVC与REST214
9.4.1 REST的概念与应用214
9.4.2 Spring MVC REST服务端:@RestController218
9.4.3 Spring MVC REST客户端:RestTemplate219
9.5 文件上传223
9.5.1 多部分表单数据类型:multipart/form-data223
9.5.2 Java文件上传功能实现方式225
9.5.3 Spring MVC 文件上传功能的实现方式228
9.5.4 Spring MVC文件上传最佳实践231
9.6 国际化233
9.6.1 Java国际化233
9.6.2 Spring国际化236
9.6.3 Spring MVC国际化237
9.6.4 语言环境解析器:LocaleResolver239
9.6.5 Spring MVC语言环境的动态修改244
9.6.6 Spring MVC国际化的使用245
第10章 Spring MVC测试框架247
10.1 Spring MVC测试概述247
10.1.1 Spring MVC的测试方式247
10.1.2 Spring Web测试实例与测试的整体框架248
10.2 模拟应用服务(MockMvc)及其构建器251
10.2.1 独立测试MockMvc构建器:StandaloneMockMvcBuilder251
10.2.2 集成测试MockMvc构建器:DefaultMockMvcBuilder252
10.3 模拟请求构造器254
10.3.1 模拟请求参数传递255
10.3.2 模拟请求构造器的请求相关设置257
10.4 结果操作258
10.4.1 结果操作接口:ResultActions259
10.4.2 结果匹配器接口:ResultMatcher260
10.4.3 结果处理器:MockMvcResultHandlers265
10.4.4 获取MvcResult后自定义验证266
10.5 Spring MVC测试框架之其他266
10.5.1 测试代码简写267
10.5.2 独立测试的依赖处理268
10.5.3 文件上传测试268
第3篇 数据技术
第11章 数据库与Java数据访问技术272
11.1 关系型数据库介绍272
11.1.1 关系型数据库产品272
11.1.2 关系型数据库及其对象273
11.1.3 关系型数据库事务274
11.1.4 SQL语言276
11.2 MySQL数据库276
11.2.1 MySQL数据类型277
11.2.2 基于MySQL的基本SQL语句279
11.2.3 MySQL高级对象与功能281
11.3 Java数据访问基本技术284
11.3.1 JDBC数据访问284
11.3.2 Java数据库连接池288
11.3.3 线程安全的数据库连接293
11.4 ORM框架介绍294
11.4.1 Java常见的ORM框架294
11.4.2 Hibernate开发步骤与实例295
11.5 JPA—Java持久层应用接口298
11.5.1 JPA的主要内容299
11.5.2 JPA的主要概念和类301
11.5.3 JPA开发规范与步骤303
11.5.4 JPA之Hibernate实现实例303
11.5.5 JPA之Eclipse Link实现实例305
第12章 MyBatis入门310
12.1 MyBatis介绍与快速入门实例310
12.1.1 MyBatis介绍310
12.1.2 MyBatis快速入门实例311
12.2 MyBatis核心接口和类314
12.2.1 SqlSession(SQL会话接口)315
12.2.2 SqlSessionFactory(SQL会话工厂接口)316
12.2.3 SqlSessionFactoryBuilder(SQL会话工厂构建类)316
12.2.4 Configuration(配置类)317
12.3 MyBatis XML全局配置文件318
12.3.1 配置文件的结构318
12.3.2 环境配置319
12.3.3 属性与属性文件配置321
12.3.4 映射引用配置322
12.3.5 MyBatis特性设置323
12.4 XML映射文件配置325
12.4.1