目录 源码下载 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