![]()
编辑推荐 " Spring Boot已成为众多软件公司开发项目的推荐技能,如BATJ大厂及很多互联网公司都在使用该技术进行企业应用开发,因此很多Java程序员都在学习Spring Boot开发的相关技能。 然而,大多数学习Spring Boot的初学者并不了解该学哪些知识体系,以及应该学到什么程度,甚至很多人虽然投入了大量时间,由于没有抓住要点,或者缺乏企业项目演练,技能提升的效果并不明显。 本书正是基于上述考虑精心编写的。本书由两位具有十余年Java开发经验的资深开发工程师编写,目标是让读者通过本书的学习真正掌握Spring Boot开发企业项目的技能。" 内容推荐 本书以企业应用开发为目标,全面讲述Spring Boot整合分布式组件进行全栈项目开发的实战技能。全书分为三部分。第一部分(~9章)主要讲述Spring Boot的相关技能,包括搭建Spring Boot开发环境、Spring Boot框架基础、JPA操作数据库、面向切面编程、基于Thymeleaf和FreeMarker的全栈开发、和过滤器、RESTful规范定义服务、Swagger组件可视化服务、logback和ELK组件输出日志、基于Spring Security和Shiro的安全框架技术和基于Junit的单元测试技术。第二部分(第10~15章)主要讲述Spring Boot整合诸多分布式组件的技术,包括整合MongoDB、Redis和MyCAT数据层组件、整合Dubbo和Zookeeper、整合RabbitMQ消息中间件和基于Nginx的分布式部署。第三部分(第16和17章),第16章以前后端分离项目为例,给出了基于Vue的全栈开发技术,其中前端用到了Vue、Element-UI和Axios等组件,后端用到了Redis缓存组件和MyCAT分库组件;第17章通过高并发限流和项目讲述了Redis和RabbitMQ等分布式组件的用法。 本书是编者十余年一线Java项目开发经验的总结,重在解决实际开发中遇到的问题,特别适合具有Java基础和想学习Spring Boot项目开发的人员使用。由于本书各章还提供了练习题,因此也很适合用作培训机构和大专院校书的教学用书。 目录 第1章 搭建Spring Boot开发环境\t1 1.1 初识Spring Boot\t1 1.1.1 Spring Boot是什么\t1 1.1.2 Spring、Spring MVC和Spring Boot的关系\t1 1.1.3 Spring Boot是SSM框架的升级版\t2 1.2 搭建Spring Boot的开发环境\t3 1.2.1 安装和配置JDK开发环境\t3 1.2.2 安装IDEA集成开发环境\t5 1.2.3 安装Maven工具\t5 1.2.4 Maven工具与IDEA的集成\t6 1.3 用Maven开发个Spring Boot项目\t8 1.3.1 搭建基于Maven的Spring Boot项目\t8 1.3.2 通过pom.xml文件引入依赖包\t9 1.3.3 开发个Spring Boot项目\t11 1.3.4 运行并观察效果\t12 1.3.5 对Spring Boot项目的直观说明\t13 1.4 思考与练习\t13 第2章 Spring Boot编程基础\t15 2.1 准备知识:什么是控制反转\t15 2.1.1 以实例了解控制反转的做法\t15 2.1.2 Bean与Spring容器\t17 2.1.3 控制反转和依赖注入是一回事\t17 2.2 Spring Boot项目的通用框架\t18 2.3 开发Spring Boot启动类\t19 2.3.1 对注解@SpringBootApplication的说明\t19 2.3.2 配置热部署\t20 2.3.3 通过Banner定制启动信息\t21 2.3.4 关闭定制的启动界面\t22 2.4 编写控制器类\t22 2.4.1 用@Controller注解定义控制器类\t22 2.4.2 用@RequestMapping映射请求\t24 2.4.3 从请求中读取参数\t26 2.4.4 用produces参数返回JSON格式的结果\t27 2.5 编写业务逻辑类\t28 2.5.1 用@Service注解编写业务处理类\t28 2.5.2 在控制器类中调用业务逻辑类的方法\t29 2.6 编写和读取配置文件\t30 2.6.1 配置和读取.properties文件\t30 2.6.2 配置和读取.yml文件\t31 2.6.3 用@Value注解读取配置文件\t32 2.6.4 在项目中用同一种风格读取配置文件\t33 2.7 思考与练习\t33 第3章 Spring Boot用JPA操作数据库\t35 3.1 搭建MySQL环境\t35 3.1.1 安装MySQL数据库和客户端\t35 3.1.2 通过MySQL客户端创建数据库连接\t36 3.1.3 通过MySQL客户端创建数据库\t38 3.1.4 在数据库中创建数据表\t39 3.1.5 向数据表中插入若干数据\t39 3.2 ORM概念与JPA组件\t40 3.2.1 通过ORM分离业务和数据库操作\t40 3.2.2 JPA组件是ORM的解决方案\t41 3.2.3 JPA组件的常用接口和实现类\t41 3.3 通过JpaRepository访问数据库\t42 3.3.1 创建项目,引入JPA依赖包\t42 3.3.2 确认MySQL数据环境\t43 3.3.3 编写业务实体类\t43 3.3.4 编写JPA的配置文件\t44 3.3.5 用JpaRepository编写Repo类\t45 3.3.6 编写控制器类和业务逻辑类\t46 3.3.7 运行观察增删改查的效果\t48 3.4 实现分页和排序的JPA接口\t49 3.4.1 用PagingAndSortingRepository实现排序和分页\t49 3.4.2 对排序和分页对象的说明\t51 3.5 深入了解JPA查询数据的方式\t52 3.5.1 JPA从方法名中解析数据库操作的方式\t52 3.5.2 用@Query查询数据\t53 3.5.3 用nativeQuery参数运行原生SQL语句\t53 3.6 通过JPA组件引入事务\t54 3.6.1 “要么全都做,要么全都不做”的事务\t54 3.6.2 用@Transactional注解管理事务\t54 3.6.3 定义事务隔离级别\t56 3.6.4 定义事务传播机制\t57 3.6.5 @transactional注解使用建议\t58 3.7 思考与练习\t59 第4章 Spring Boot整合前端模板\t60 4.1 Thymeleaf模板与前后端交互\t60 4.1.1 用于前后端交互的ModelAndView对象\t60 4.1.2 Spring Boot与Thymeleaf整合的范例\t61 4.1.3 用Thymeleaf循环展示数据\t64 4.1.4 用Thymeleaf进行条件判断\t66 4.2 Spring Boot、JPA整合Thymeleaf\t67 4.2.1 创建项目并准备数据环境\t67 4.2.2 通过JPA获取数据并传给前端\t68 4.2.3 用Thymeleaf模板演示分页效果\t71 4.3 Spring Boot整合FreeMarker\t74 4.3.1 Spring Boot整合FreeMarker的简单范例\t74 4.3.2 用FreeMarker模板展示分页效果\t76 4.4 思考与练习\t79 第5章 面向切面编程与过滤器\t80 5.1 面向切面的概念和做法\t80 5.1.1 相关概念\t80 5.1.2 用范例了解面向切面编程\t81 5.1.3 环绕通知与\t85 5.2 Spring Boot与\t85 5.2.1 的重要方法\t85 5.2.2 Spring Boot整合多个\t86 5.2.3 从的运行效果观察执行顺序\t90 5.3 Spring Boot与过滤器\t90 5.3.1 过滤器的3个重要方法\t90 5.3.2 Spring Boot整合多个过滤器\t91 5.3.3 从运行效果观察过滤器的执行顺序\t94 5.3.4 过滤器和的异同点\t94 5.4 思考与练习\t95 第6章 用RESTful规范提供统一风格的服务\t96 6.1 RESTful规范与模块间的通信\t96 6.1.1 URL请求、HTTP动作与返回码\t96 6.1.2 什么是RESTful\t97 6.1.3 增删改查方法对应的RESTful接口名\t98 6.1.4 调用不同版本的请求\t98 6.2 用RESTful统一项目的对外服务风格\t99 6.2.1 创建项目\t99 6.2.2 定义pom.xml,编写启动类\t100 6.2.3 统一返回结果的格式\t100 6.2.4 在控制器类中定义增删改查方法\t102 6.2.5 全局性异常处理机制\t104 6.3 用RestTemplate调用RESTful请求\t105 6.3.1 RestTemplate对象重要方法说明\t106 6.3.2 用RestTemplate发起POST请求\t106 6.3.3 用RestTemplate发起GET请求\t107 6.3.4 观察异常处理的结果\t108 6.3.5 用RestTemplate发起PUT请求\t109 6.3.6 用RestTemplate发起DELETE请求\t109 6.4 用Swagger可视化RESTful请求\t110 6.4.1 Swagger能解决哪些问题\t110 6.4.2 用Swagger可视化RESTful请求\t110 6.4.3 演示运行效果\t112 6.5 思考与练习\t114 第7章 Spring Boot整合日志组件\t116 7.1 Spring Boot整合logback输出日志\t116 7.1.1 Spring Boot整合logback的范例项目\t116 7.1.2 用不同级别的日志输出不同种类的信息\t120 7.1.3 为每个线程设置专享标识,方便追踪问题\t121 7.1.4 格式化日志文件名,方便排查问题\t122 7.2 搭建ELK组件开发环境\t122 7.2.1 ELK组件与工作示意图\t123 7.2.2 搭建ELK运行环境\t123 7.3 Spring Boot整合ELK平台\t126 7.3.1 Spring Boot向ELK输出日志\t126 7.3.2 在Kibana中观察日志\t127 7.4 思考与练习\t129 第8章 Spring Boot整合Junit单元测试组件\t131 8.1 了解单元测试\t131 8.1.1 单元测试的目的及难点分析\t131 8.1.2 Junit组件简介\t132 8.1.3 单元测试同其他测试的关系\t132 8.2 对待测试项目的分析\t133 8.2.1 构建待测试的项目\t133 8.2.2 测试要点分析\t134 8.3 Spring Boot整合Junit\t135 8.3.1 引入Junit依赖包\t135 8.3.2 测试控制器方法\t135 8.3.3 测试业务处理方法\t138 8.3.4 测试数据访问方法\t140 8.4 思考与练习\t141 第9章 Spring Boot集成安全管理框架\t143 9.1 安全管理与Spring Security框架\t143 9.1.1 安全管理需求点分析\t143 9.1.2 Spring Security框架介绍\t144 9.2 Spring Boot整合Spring Security\t144 9.2.1 引入依赖包,编写启动类和控制类\t144 9.2.2 观察身份验证效果\t145 9.2.3 在配置文件中管理登录信息\t146 9.2.4 以配置类的方式管理登录信息\t146 9.2.5 基于角色的权限管理\t147 9.3 基于数据库的安全管理框架\t149 9.3.1 准备数据\t149 9.3.2 创建项目,编写pom.xml\t151 9.3.3 编写数据库配置文件\t152 9.3.4 从数据库中获取安全信息\t152 9.4 Spring Boot整合Shiro框架\t153 9.4.1 Shiro框架概述\t153 9.4.2 Spring Boot整合Shiro框架的范例说明\t154 9.4.3 编写pom.xml文件和启动类\t154 9.4.4 编写控制器类\t155 9.4.5 编写Shiro相关类\t156 9.4.6 编写登录等前端代码\t159 9.4.7 观察基于Shiro的安全验证流程\t160 9.5 思考与练习\t161 第10章 Spring Boot整合MongoDB数据库\t163 10.1 了解MongoDB\t163 10.1.1 MongoDB概述\t163 10.1.2 MongoDB的优缺点\t164 10.1.3 安装MongoDB数据库\t164 10.2 使用MongoDB\t165 10.2.1 创建数据库和数据表\t165 10.2.2 操作数据表的数据\t166 10.3 Spring Boot整合MongoDB\t167 10.3.1 项目和数据库的说明\t167 10.3.2 编写pom文件、启动类和配置文件\t167 10.3.3 编写业务模型类\t168 10.3.4 通过MongoTemplate操作MongoDB\t169 10.3.5 通过JPA操作MongoDB\t171 10.3.6 观察运行结果\t172 10.4 思考与练习\t173 第11章 Spring Boot整合Redis缓存\t174 11.1 了解Redis\t174 11.1.1 Redis概述\t174 11.1.2 Redis的优缺点\t175 11.1.3 搭建Redis数据库环境\t175 11.1.4 Redis服务器和客户端\t176 11.2 Redis常用命令\t176 11.2.1 set和get命令\t176 11.2.2 del命令\t177 11.2.3 exists命令\t177 11.3 Redis基本数据类型\t178 11.3.1 字符串类型\t178 11.3.2 Hash类型\t178 11.3.3 列表类型\t179 11.3.4 集合类型\t180 11.3.5 有序集合类型\t180 11.4 Spring Boot整合Redis\t181 11.4.1 项目说明\t181 11.4.2 引入依赖包\t182 11.4.3 编写配置文件和启动类\t182 11.4.4 编写控制器类和业务模型类\t183 11.4.5 编写业务逻辑类\t184 11.4.6 编写与Redis交互的类\t185 11.4.7 观察和Redis整合的效果\t186 11.5 Spring Boot整合数据库与Redis缓存\t186 11.5.1 数据库整合缓存的说明\t186 11.5.2 防缓存穿透的设计\t187 11.5.3 防内存溢出的设计\t187 11.5.4 整合数据库和缓存的项目\t188 11.5.5 观察MySQL和Redis的整合效果\t193 11.6 思考与练习\t194 第12章 Spring Boot整合MyCAT分库组件\t196 12.1 MyCAT分库组件概述\t196 12.1.1 分库需求与MyCAT组件\t196 12.1.2 MyCAT组件的重要配置文件\t197 12.1.3 下载MyCAT组件\t198 12.2 MyCAT整合MySQL实现分库效果\t198 12.2.1 分库效果框架图\t199 12.2.2 用MyCAT实现分库效果\t199 12.2.3 观察分库效果\t202 12.3 Spring Boot整合MyCAT组件\t202 12.3.1 通过pom.xml文件引入依赖包\t202 12.3.2 编写配置文件\t203 12.3.3 实现整合效果\t203 12.3.4 观察分库效果\t205 12.4 Spring Boot整合Redis与MyCAT组件\t206 12.4.1 整合后的数据服务架构\t206 12.4.2 实现整合效果\t206 12.4.3 观察整合效果\t210 12.5 思考与练习\t211 第13章 Spring Boot整合Dubbo和Zookeeper组件\t213 13.1 Zookeeper和Dubbo框架概述\t213 13.1.1 远端方法调用和Dubbo组件\t213 13.1.2 Dubbo注册中心与Zookeeper组件\t214 13.1.3 下载并配置Zookeeper组件\t215 13.2 搭建基于Dubbo的服务提供者\t215 13.2.1 编写pom.xml和启动类\t216 13.2.2 编写配置文件\t217 13.2.3 编写服务接口和服务类\t217 13.2.4 关于超时时间说明\t218 13.2.5 关于重试次数的说明\t218 13.3 编写调用Dubbo服务的项目\t219 13.3.1 编写配置文件\t219 13.3.2 重写Dubbo服务方法的接口\t219 13.3.3 通过@Reference注解调用方法\t219 13.3.4 观察Dubbo调用的效果\t220 13.4 思考与练习\t221 第14章 Spring Boot整合RabbitMQ消息中间件\t222 14.1 RabbitMQ概述\t222 14.1.1 消息队列和RabbitMQ消息中间件\t222 14.1.2 消息交换机与消息队列\t223 14.1.3 搭建RabbitMQ工作环境\t223 14.2 Spring Boot整合RabbitMQ\t224 14.2.1 项目概述\t224 14.2.2 编写pom.xml和启动类\t225 14.2.3 编写配置文件\t225 14.2.4 编写待传输的对象类\t225 14.2.5 编写消息交换机和消息队列的配置类\t226 14.2.6 发送String和对象型的消息\t227 14.2.7 观察接收String消息的效果\t228 14.2.8 观察接收对象类消息的效果\t229 14.3 用RabbitMQ搭建异步交互系统\t229 14.3.1 异步系统概述\t230 14.3.2 包含RabbitMQ的服务调用者\t230 14.3.3 包含RabbitMQ的服务提供者\t233 14.3.4 观察异步交互流程\t234 14.4 思考与练习\t235 第15章 项目打包、分布式部署和监控\t236 15.1 打包和运行Spring Boot项目\t236 15.1.1 用Maven命令打包\t236 15.1.2 用Java命令启动项目\t238 15.2 基于Nginx的分布式部署\t239 15.2.1 Nginx组件与分布式负载均衡\t239 15.2.2 下载Nginx组件\t239 15.2.3 实践分布式部署Spring Boot项目\t240 15.3 监控Spring Boot项目\t242 15.3.1 引入依赖包,监控端点\t242 15.3.2 配置监控项\t243 15.3.3 可视化监控并邮件告警\t244 15.4 思考与练习\t247 第16章 Spring Boot+Vue前后端分离项目的开发\t249 16.1 项目概述\t249 16.1.1 演示增删改查订单效果\t249 16.1.2 后端项目说明\t250 16.1.3 前端框架和组件分析\t251 16.2 后端Spring Boot项目实践要点\t252 16.2.1 application.yml配置文件\t252 16.2.2 跨域问题与CORS解决方法\t253 16.2.3 控制器层对外提供的服务方法\t253 16.3 搭建前端Vue项目框架\t255 16.3.1 安装Node.js和Visual Studio Code\t255 16.3.2 创建前端Vue项目\t255 16.3.3 引入Element-ui和Axios组件\t256 16.4 开发前端页面\t256 16.4.1 前端重要文件的说明\t256 16.4.2 在首页添加诸多组件\t257 16.4.3 定义路由效果\t258 16.4.4 分页展示订单\t259 16.4.5 修改订单页面\t262 16.4.6 添加订单页面\t264 16.5 观察项目的运行效果\t265 16.5.1 启动前后端项目\t266 16.5.2 展示订单和删除订单\t266 16.5.3 修改订单\t267 16.5.4 添加订单\t267 16.6 思考与练习\t267 第17章 Spring+Redis+RabbitMQ限流和项目的开发\t269 17.1 项目概述\t269 17.2 基于Redis的Lua脚本分析\t270 17.2.1 Lua脚本的特性\t270 17.2.2 在Redis中引入Lua脚本\t270 17.2.3 Lua脚本的返回值和参数\t271 17.2.4 分支语句\t272 17.3 实现限流和功能\t272 17.3.1 创建项目并编写配置文件\t272 17.3.2 编写启动类和控制器类\t273 17.3.3 消息队列的相关配置\t275 17.3.4 实现功能的Lua脚本\t275 17.3.5 在实现业务实现类中实现限流和\t276 17.3.6 观察效果\t278 17.4 以异步方式保存结果\t278 17.4.1 创建项目并设计数据表\t279 17.4.2 配置消息队列和数据库参数\t279 17.4.3 监听消息队列并保存结果\t281 17.4.4 全链路效果演示\t282 17.5 思考与练习\t283 |