目录 

源码下载

1.1 Spring概述···························································································································1 
1.1.1 Spring的由来 ·········································································································1 
1.1.2 Spring的体系结构 ·································································································2 
1.2 Spring开发环境的构建 

·······························································································4 
1.2.1 配置 IntelliJ IDEA的 Web服务器 ······································································4 
1.2.2 Spring的下载 ·········································································································6 
1.2.3 第一个 Spring入门程序························································································6 
1.3  Spring IoC 

··················································································································· 10 
1.3.1 Spring IoC的基本概念 ······················································································ 10 
1.3.2 Spring的常用注解 ······························································································ 10 
1.3.3 基于注解的依赖注入··························································································· 11 
1.4  Spring AOP 

················································································································ 14 
1.4.1 Spring AOP的基本概念 ···················································································· 14 
1.4.2 基于注解开发 AspectJ························································································ 16 
1.5  Spring Bean 

··············································································································· 20 
1.5.1 Bean的实例化 ····································································································· 20 
1.5.2 Bean的作用域 ····································································································· 22 
1.5.3 Bean的初始化和销毁························································································· 24 
本章小结 ······································································································································· 25 
习题 1 ············································································································································ 26 

2.1 Spring MVC的工作原理 ································································································ 27 
2.2 Spring MVC的工作环境 

·························································································· 28 
2.2.1 Spring MVC所需要的 JAR包·········································································· 28 
2.2.2 使用 IntelliJ IDEA开发 Spring MVC应用 ···················································· 29 
2.2.3 基于 Java配置的 Spring MVC应用 ······························································· 35 

2.3 基于注解的控制器 

······································································································ 37 
2.3.1 Controller注解类型 ··························································································· 37 
2.3.2 RequestMapping注解类型 ············································································· 37 
2.3.3 编写请求处理方法································································································ 39 
2.3.4 Controller接收请求参数的常见方式 ······························································ 40 
2.3.5 重定向与转发········································································································ 44 
2.3.6 应用@Autowired进行依赖注入······································································ 45 
2.3.7 @ModelAttribute······························································································ 47 
2.4 JSON数据交互 

··········································································································· 48 
2.4.1 JSON数据结构 ···································································································· 48 
2.4.2 JSON数据转换 ···································································································· 49 
2.5 Spring MVC的基本配置 

·························································································· 52 
2.5.1 静态资源配置········································································································ 52 
2.5.2 拦截器配置 ············································································································ 53 
2.5.3 文件上传配置········································································································ 54 
本章小结 ······································································································································· 59 
习题 2 ············································································································································ 59 

3.1 Spring Boot概述············································································································· 60 
3.1.1 什么是 Spring Boot···························································································· 60 
3.1.2 Spring Boot的优点···························································································· 60 
3.1.3 Spring Boot的主要特性 ··················································································· 61 
3.2 第一个 Spring Boot应用 

························································································· 61 
3.2.1 Maven简介 ·········································································································· 61 
3.2.2 Maven的 pom.xml···························································································· 61 
3.2.3 使用 IntelliJ IDEA快速构建 Spring Boot应用 ············································ 62 
本章小结 ······································································································································· 65 
习题 3 ············································································································································ 65 

4.1 Spring Boot的基本配置 ································································································ 66 
4.1.1 启动类和核心注解@SpringBootApplication ·············································· 66 
4.1.2 Spring Boot的全局配置文件 ··········································································· 67 
4.1.3 Spring Boot的 Starters···················································································· 67 
4.2 读取应用配置 

·············································································································· 68 


4.2.1 使用Environment类 ························································································· 68 
4.2.2 使用@Value注解 ································································································ 69 
4.2.3 使用@ConfigurationProperties注解··························································· 70 
4.2.4 使用@PropertySource注解 ············································································ 71 
4.3 日志配置 ····························································································································· 72 
4.4 Spring Boot的自动配置原理 

·················································································· 73 
4.5 Spring Boot的条件注解 ································································································ 75 
4.5.1 条件注解 ················································································································ 75 
4.5.2自定义条件 

······································································································ 76 
4.5.3自定义 Starters 

······························································································ 78 
本章小结 ······································································································································· 84 
习题 4 ············································································································································ 84 

5.1 Spring Boot的Web开发支持 ····················································································· 85 
5.2 Thymeleaf模板引擎········································································································ 85 
5.2.1 Spring Boot的 Thymeleaf支持····································································· 86 
5.2.2 Thymeleaf的基础语法······················································································ 87 
5.2.3 Thymeleaf的常用属性······················································································ 90 
5.2.4 通过 Spring Boot与 Thymeleaf实现页面信息的国际化 

···················· 93 
5.2.5 Spring Boot与 Thymeleaf的表单验证 

·················································· 97 
5.2.6基于 Thymeleaf和 BootStrap的 Web开发实例 

·······························101 
5.3 使用 Spring Boot处理 JSON数据 

······································································104 
5.4 Spring Boot的文件上传与下载 

···········································································108 
5.5 Spring Boot的异常统一处理 

················································································112 
5.5.1 自定义 error页面 ······························································································113 
5.5.2 @ExceptionHandler注解 ··············································································116 
5.5.3 @ControllerAdvice注解 ················································································117 
5.6 Spring Boot对 JSP的支持 

···················································································118 
本章小结 ·····································································································································120 
习题 5 ··········································································································································120 

6.1 Spring Data JPA ············································································································122 
6.1.1 Spring Boot的支持··························································································123 


6.1.2 简单条件查询 

·······························································································124 
6.1.3关联查询 

········································································································131 
6.1.4 @Query和@Modifying注解·······································································148 
6.1.5 排序与分页查询 

···························································································148 
6.2  REST 

····························································································································152 
6.2.1 REST简介············································································································152 
6.2.2 Spring Boot整合 REST ···················································································154 
6.2.3 Spring Data REST ····························································································155 
6.2.4 REST服务测试 ···································································································156 
6.3  MongoDB 

·················································································································161 
6.3.1 安装 MongoDB ·································································································161 
6.3.2 Spring Boot整合 MongoDB ········································································161 
6.3.3 增、删、改、查··································································································162 
6.4  Redis 

···························································································································165 
6.4.1 安装 Redis···········································································································166 
6.4.2 Spring Boot整合 Redis ··················································································169 
6.4.3 使用 StringRedisTemplate和 RedisTemplate··········································170 
6.5  数据缓存 Cache 

········································································································174 
6.5.1 Spring缓存支持 ································································································174 
6.5.2 Spring Boot缓存支持 ·····················································································176 
6.5.3 使用 Redis Cache ·····························································································180 
本章小结 ·····································································································································181 
习题 6 ··········································································································································181 

7.1  Spring Boot整合 MyBatis 

····················································································182 
7.2 MyBatis基础···················································································································185 
7.2.1<select>元素 

······························································································185 
7.2.2 <insert>、<update>以及<delete>元素 

···········································189 
7.2.3动态 SQL 

·······································································································189 
7.3MyBatis-Plus快速入门 

··························································································191 
7.3.1 MyBatis-Plus简介····························································································191 
7.3.2 Spring Boot整合 MyBatis-Plus ···································································192 
7.4MyBatis-Plus基础 

··································································································194 
7.4.1 MyBatis-Plus注解····························································································194 
7.4.2 CRUD接口··········································································································197 
7.4.3 条件构造器 ··········································································································204 


本章小结 ·····································································································································208 习题 7 ··········································································································································208 

8.1 Spring Security快速入门 ····························································································209 
8.1.1 什么是 Spring Security ···················································································209 
8.1.2 Spring Security的用户认证···········································································209 
8.1.3 Spring Security的请求授权···········································································211 
8.1.4 Spring Security的核心类 ···············································································211 
8.1.5 Spring Security的验证机制···········································································213 
8.2 Spring Boot的支持·······································································································213 
8.3 实际开发中的 Spring Security操作实例 

····························································213
本章小结 ·····································································································································223 
习题 8 ··········································································································································223 

9.1 消息模型 ···························································································································224 
9.1.1 点对点式 ··············································································································224 
9.1.2 发布/订阅式 ········································································································224 
9.2 企业级消息代理···············································································································225 
9.2.1 JMS·······················································································································225 
9.2.2 AMQP··················································································································226 
9.3 Spring Boot的支持·······································································································228 
9.3.1 JMS的自动配置·································································································228 
9.3.2 AMQP的自动配置 ····························································································228 
9.4 异步消息通信实例···········································································································228 
9.4.1JMS实例 

·······································································································228 
9.4.2AMQP实例 

··································································································233 
本章小结 ·····································································································································238 
习题 9 ··········································································································································238

10.1 JUnit 5····························································································································239 
10.1.1 JUnit 5简介 ···································································································239 


10.1.2 JUnit 5注解 ···································································································240 
10.1.3 JUnit 5断言 ···································································································241 
10.2 单元测试用例 

··········································································································242 
10.2.1 测试环境的构建 ·····························································································242 
10.2.2 测试 Mapper接口························································································244 
10.2.3 测试 Service层 ·····························································································245 
10.3 使用 Postman测试 Controller层 

·····································································246 
本章小结 ·····································································································································249 
习题 10········································································································································249 

11.1 网站交互方式·················································································································250 
11.1.1 多页应用程序·································································································250 
11.1.2 单页应用程序·································································································251 
11.2 MVVM模式 ··················································································································252 
11.3 Vue.js是什么 ················································································································253 
11.4 安装 Vue.js·····················································································································253 
11.5 第一个 Vue.js程序 

·································································································253 
11.5.1 安装 Visual Studio Code及其插件 ·························································254 
11.5.2 创建第一个 Vue.js应用···············································································255 
11.5.3 声明式渲染·····································································································256 
11.5.4 Vue.js的生命周期 ························································································257 
11.6 插值与表达式·················································································································259 
11.6.1 文本插值·········································································································259 
11.6.2 原始 HTML插值 ···························································································259 
11.6.3 JavaScript表达式 ························································································259 
11.7 计算属性和监听器属性································································································259 

·············································································260 
11.7.1计算属性 computed 
11.7.2监听器属性 watch 

··················································································263 
11.8 内置指令·························································································································264 
11.8.1v-bind指令 

·····························································································265 
11.8.2 条件渲染指令 v-if和 v-show 

······························································266 

···············································································267 
11.8.3 列表渲染指令 v-for 
11.8.4事件处理 

··································································································268 
11.8.5表单与 v-model 

·····················································································270 

··················································································272 
11.8.6实战:购物车实例 


11.9 组件 ·································································································································274 
11.9.1组件的注册 

······························································································275 
11.9.2使用 props传递数据 

·············································································277 
11.9.3组件的通信 

······························································································278 
11.9.4 动态组件与异步组件 

··············································································283 
11.9.5实战:正整数数字输入框组件 

·····························································285 
11.10自定义指令 

············································································································286 
11.10.1 自定义指令的注册····················································································286 
11.10.2 实战:实时时间转换指令 ·······································································288 
11.11响应性 

····················································································································290 
11.11.1 什么是响应性 ····························································································290 
11.11.2 响应性的原理 ····························································································290 
11.12 setup组件选项 

····································································································291 
11.12.1 setup函数的参数 ····················································································291 
11.12.2 setup函数的返回值················································································293 
11.12.3 使用 ref创建响应式引用 ········································································294 
11.12.4 在 setup内部调用生命周期钩子函数··················································295 
本章小结 ·····································································································································295 
习题 11········································································································································295 

12.1 单文件组件与 webpack ······························································································298 
12.2 安装 Node.js和 NPM·································································································299 
12.2.1 安装 Node.js ·································································································299 
12.2.2 NPM常用的命令··························································································300 
12.3 Vue Router ···················································································································302 

················································································302 
12.3.1Vue Router的安装 
12.3.2Vue Router的基本用法 

·······································································306 
12.3.3Vue Router的高级应用 
·······································································311 
12.3.4 路由钩子函数·································································································321 
12.3.5 路由元信息·····································································································324 
12.3.6 登录权限验证示例 

··················································································325 
12.4 setup语法糖 

··········································································································328 
12.4.1 属性与方法的绑定 ························································································328 
12.4.2 路由 ·················································································································330 
12.4.3 组件传值·········································································································331 


12.5 Element Plus UI组件库 

······················································································333 
12.5.1 Element Plus的安装···················································································334 
12.5.2 Element Plus组件的介绍 ··········································································334 
12.5.3 Element Plus组件的应用 ··········································································335 
12.5.4 按需引入 Element Plus ··············································································336 
本章小结 ·····································································································································338 
习题 12········································································································································338 

······················································································································································339 


······················································································································································340