深入实践Spring Boot导读

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 MongoDB,通用型 2核4GB
简介:
Preface?前  言
Spring Boot作为Java编程语言的一个全新开发框架,在国内外才刚刚兴起,还未得到普及使用。相比于以往的一些开发框架,Spring Boot不但使用更加简单,而且功能更加丰富,性能更加稳定而健壮。使用Spring Boot开发框架,不仅能提高开发速度,增强生产效率,从某种意义上,可以说是解放了程序员的劳动,而且一种新技术的使用,更能增强系统的稳定性和扩展系统的性能指标。本书就是本着提高开发效率,增强系统性能,促进新技术的普及使用这一目的而写的。
Spring Boot是在Spring框架基础上创建的一个全新框架,其设计目的是简化Spring应用的搭建和开发过程,它不但具有Spring的所有优秀特性,而且具有如下显著的特点:
为Spring开发提供更加简单的使用和快速开发的技巧。
具有开箱即用的默认配置功能,能根据项目依赖自动配置。
具有功能更加强大的服务体系,包括嵌入式服务、安全、性能指标、健康检查等。
绝对没有代码生成,可以不再需要XML配置,即可让应用更加轻巧和灵活。
Spring Boot对于一些第三方技术的使用,提供了非常完美的整合,使你在简单的使用中,不知不觉运用了非常高级和先进的技术。
虽然Spring Boot具有这么多优秀的特性,但它使用起来并不复杂,而且非常简单,所以不管是Java程序开发初学者,还是经验丰富的开发人员,使用Spring Boot都是一个理想的选择。
Spring Boot发展迅速,自从2014年4月发布了1.0.0版本,至今已经发布了1.4.0正式版。现在,Spring Boot正在不同的角落中悄然兴起,估计用不了多久,它将成为Java开发的又一个热潮,为众多Java开发者追捧。
本书将以一些非常切合生产实际的应用实例,带你一起使用Spring Boot框架,开始一段愉快的快速开发和探索之旅。
关于本书
本书以丰富的实例,介绍了如何使用Spring Boot开发框架进行基础应用和分布式应用等方面的开发,并且介绍了如何使用Spring Boot开发的应用搭建一个高性能的服务平台,同时还对Spring Boot的一些核心功能的源代码进行了分析,从而加深对Spring Boot的理解。书中对从最基本的入门知识,到数据库的使用,以及界面设计、安全设计等领域都做了详细的介绍和探讨,并在分布式应用系统领域,以平台级应用系统的实例,介绍了如何创建和使用SSO管理系统、分布式文件系统,如何使用Spring Cloud进行云应用方面的开发,以及如何使用Docker发布和构建高可用的分布式系统服务平台。同时,对Spring Boot的程序加载、自动配置、数据管理,和Spring Cloud的配置管理、发现服务和负载均衡服务等核心功能的源代码做了深入剖析,这样在认识其实现原理的基础上,能更好地使用其相应的功能。
全书分为三个部分:第一部分(第1~5章)介绍基础应用方面的开发,包含简单入门知识、数据库使用、界面设计和安全设计等内容;第二部分(第6~9章)介绍了Spring Boot在分布式系统开发和云应用开发等方面的应用以及使用微服务构建高可用的服务平台;第三部分(第10~12章)对Spring Boot的程序加载、自动配置和数据管理的实现原理,以及Spring Cloud的配置管理、发现服务和负载均衡服务等实现原理进行了深入的剖析。
本书章节编排
第1章为Spring Boot入门,介绍开发环境的搭建和开发工具的选择及安装配置,并使用一个非常简单的实例,说明如何轻易地使用Spring Boot开发框架。
第2章使用Spring Boot框架演示了以不同于以往的方式,以及如何轻易地使用数据库,并实际演示使用MySQL、MongoDB、Redis和Neo4j等数据库。
第3章使用Thymeleaf模板结合一些流行的JavaScript插件,介绍了使用Spring Boot进行界面设计的方法和技巧。
第4章对使用Spring Boot提高传统关系型数据库的性能方面做了一些探讨和尝试,并扩展了使用JPA资源库的功能。
第5章介绍了如何使用Spring Boot结合Spring Security进行安全设计,包括登录认证和角色管理、权限管理等内容。
第6章介绍如何使用Spring Security结合OAuth2进行SSO(Single Sign On)的设计,并演示如何在分布式应用系统中使用认证授权和安全管理的功能。
第7章介绍如何使用Spring Boot框架结合分布式文件系统FastDFS,并使用定制方式和富文本编辑器的方式演示了使用图片上传和建立本地图片库的方法。
第8章介绍云应用开发,包括配置管理、发现服务和监控服务的使用,以及如何使用动态路由和断路器的功能,创建高可用的微服务应用。
第9章介绍如何使用Docker引擎和docker-compose工具来发布应用和管理服务,以及如何构建一个高性能的服务平台和怎样使用Docker实施负载均衡。
第10章分析了Spring Boot的应用程序加载和自动配置原理,以及如何以改造加载配置的方式来提高应用的性能。
第11章分析了Spring Boot使用数据库的实现原理,并演示怎样利用一些技术手段提高和扩展访问数据库的功能。
第12章简要分析了微服务中配置管理、发现服务和负载均衡服务的实现原理和部分核心源代码,并使用一个实例说明配置管理中分布式消息的实现机制和原理。
附录A~附录D介绍了Neo4j、MongoDB、Redis、RabbitMQ等服务器的安装、配置和基本使用方法。
读者对象
本书适于所有Java编程语言开发人员,所有对Spring Boot感兴趣并希望使用Spring Boot开发框架进行开发的人员,已经使用过Spring Boot框架但希望更好地使用Spring Boot的开发人员,以及系统设计师、架构师等设计人员。同时,本书对运维人员和DBA等也具有一定的参考价值。
实例代码
本书的实例代码可以通过https://github.com/chenfromsz?tab=repositories查看和下载,推荐根据每章的提示使用IntelliJ IDEA通过GitHub检出各章的实例工程,这样可以保留原来工程的配置,并且能够直接使用。
反馈与勘误
读者如有反馈意见可以通过https://github.com/chenfromsz/correct/issues发起新话题与作者进行交互,在这也可能会发布一些勘误信息,以便纠正不可避免的错误。
致谢
首先,非常感谢华阳信通公司,虽然本书的编写过程大都在业余时间完成,但是公司强大的平台给本书的实例提供了更加方便的分享、验证和测试条件。同时在本书的编写过程中,也得到了我们的开发团队和众多朋友的大力支持和帮助,在此表示衷心的感谢!最后感谢华章公司的杨福川和李艺,他们在本书编辑的过程中,提出了一些宝贵而有益的建议,并为本书的出版做了许多工作。
由于时间仓促和水平有限,书中难免出现一些纰漏或不正确的地方,敬请大家批评指正!





Contents 目  录
前 言
1.4 运行与发布                         
第4章 提高数据库访问性能 
4.1 使用Druid  
4.1.1 配置Druid依赖  
4.1.2 关于XML配置 
4.1.3 Druid数据源配置 
4.1.4 开启监控功能  
4.2 扩展JPA功能  
4.2.1 扩展JPA接口  
4.2.2 装配自定义的扩展接口  
4.2.3 使用扩展接口  
4.3 使用Redis做缓存  
4.3.1 使用Spring Cache注解  
4.3.2 使用RedisTemplate  
4.4 Web应用模块  
4.4.1 引用数据管理模块  
4.4.2 Web应用配置  
4.5 运行与发布  
4.6 小结  
第5章 Spring Boot安全设计  
5.1 依赖配置管理 
5.2 安全策略配置  
5.2.1 权限管理规则 
5.2.2 登录成功处理器  
5.2.3 防攻击策略  
5.2.4 记住登录状态 
5.3 登录认证设计  
5.3.1 用户实体建模  
5.3.2 用户身份验证  
5.3.3 登录界面设计  
5.3.4 验证码验证  
5.4 权限管理设计  
5.4.1 权限管理配置  
5.4.2 权限管理过滤器  
5.4.3 权限配置资源管理器  
5.4.4 权限管理决断器  
5.5 根据权限设置链接  
5.6 运行与发布  
5.6.1 系统初始化  
5.6.2 系统运行与发布  
5.7 小结  
第二部分 分布式应用开发
第6章 Spring Boot SSO  
6.1 模块化设计  
6.2 登录认证模块  
6.2.1 使用OAuth2  
6.2.2 创建数字证书  
6.2.3 认证服务端配置  
6.3 安全配置模块  
6.4 SSO客户端  
6.4.1 客户端配置  
6.4.2 登录登出设计  
6.5 共享资源服务  
6.5.1 提供共享资源接口  
6.5.2 使用共享资源 
6.5.3 查询登录用户的详细信息  
6.6 运行与发布
6.7 小结  
第7章 使用分布式文件系统  
7.1 FastDFS安装 
7.1.1 下载安装包  
7.1.2 安装服务  
7.1.3 Tracker Server配置
7.1.4 Storage Server配置 
7.1.5 启动服务  
7.2 FastFDS客户端  
7.2.1 客户端配置  
7.2.2 客户端服务类
7.3 使用定制方式上传图片  
7.3.1 实体建模  
7.3.2 上传图片  
7.4 使用富文本编辑器上传图片 
7.4.1 使用富文本编辑器  
7.4.2 实现文件上传 
7.5 使用本地文件库 
7.5.1 本地文件库建模  
7.5.2 文件保存方法  
7.5.3 文件库管理  
7.6 运行与发布 
7.7 小结  
第8章 云应用开发 
8.1 使用配置管理  
8.1.1 创建配置管理服务器  
8.1.2 使用配置管理的客户端  
8.1.3 实现在线更新  
8.1.4 更新所有客户端的配置  
8.2 使用发现服务 
8.2.1 创建发现服务器 
8.2.2 使用发现服务的客户端配置  
8.2.3 发现服务器测试 
8.3 使用动态路由和断路器  
8.3.1 依赖配置 
8.3.2 共享REST资源
8.3.3 通过路由访问REST资源 
8.3.4 使用断路器功能 
8.3.5 路由器和断路器测试  
8.4 使用监控服务 
8.4.1 创建监控服务器  
8.4.2 监控服务器测试 
8.5 运行与发布 
8.6 小结 
第9章 构建高性能的服务平台  
9.1 使用Docker 
9.1.1 Docker安装
9.1.2 Docker常用指令 
9.1.3 使用Docker发布服务 
9.2 创建和管理一个高性能的服务体系  
9.2.1 安装docker-compose  
9.2.2 docker-compose常用指令  
9.2.3 使用docker-compose管理服务  
9.3 使用Docker的其他负载均衡实施方法  
9.3.1 使用Nginx与Docker构建负载均衡服务  
9.3.2 阿里云的负载均衡设计实例  
9.4 小结  
第三部分 核心技术源代码分析
第10章 Spring Boot自动配置实现原理  
10.1 Spring Boot主程序的功能  
10.1.1 SpringApplication的run方法  
10.1.2 创建应用上下文  
10.1.3 自动加载  
10.2 Spring Boot自动配置原理  
10.2.1 自动配置的即插即用原理  
10.2.2 自动配置的约定优先原理  
10.3 提升应用的性能  
10.3.1 更改加载配置的方式  
10.3.2 将Tomcat换成Jetty  
10.4 性能对照测试  
10.5 小结  
第11章 Spring Boot数据访问实现原理  
11.1 连接数据源的源代码分析  
11.1.1 数据源类型和驱动  
11.1.2 支持的数据库种类  
11.1.3 与数据库服务器建立连接  
11.2 数据存取功能实现原理  
11.2.1 实体建模源代码分析  
11.2.2 持久化实现原理  
11.3 扩展数据存取的功能  
11.3.1 扩展JPA功能  
11.3.2 扩展Neo4j功能  
11.4 小结  
第12章 微服务核心技术实现原理  
12.1.1 在线更新流程  
12.1.2 更新消息的分发原理  
12.2 发现服务源代码剖析  
12.2.1 服务端的服务注册功能  
12.2.2 客户端注册和提取服务列表  
12.3 负载均衡源代码剖析  
12.4 分布式消息实现原理演示  
12.4.1 消息生产者  
12.4.2 消息消费者  
12.5 小结 
附录A 安装Neo4j 
附录B 安装MongoDB 
附录C 安装Redis  
附录D 安装RabbitMQ  
结束语  
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
22天前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
38 0
|
1月前
|
缓存 Java API
【云原生】Spring Cloud Gateway的底层原理与实践方法探究
【云原生】Spring Cloud Gateway的底层原理与实践方法探究
|
2月前
|
安全 Java 数据库
后端进阶之路——万字总结Spring Security与数据库集成实践(五)
后端进阶之路——万字总结Spring Security与数据库集成实践(五)
|
3月前
|
Java 数据库连接 Spring
从零开始,探索Spring框架的魅力与实践
从零开始,探索Spring框架的魅力与实践
|
3月前
|
缓存 NoSQL Java
Spring Cache 缓存原理与 Redis 实践
Spring Cache 缓存原理与 Redis 实践
141 0
|
3月前
|
前端开发 安全 Java
Spring Boot项目中VO层设计:选择继承或组合的灵活实践
Spring Boot项目中VO层设计:选择继承或组合的灵活实践
92 0
|
1天前
|
安全 Java 应用服务中间件
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
4 0
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
|
3天前
|
XML Java C++
【Spring系列】Sping VS Sping Boot区别与联系
【4月更文挑战第2天】Spring系列第一课:Spring Boot 能力介绍及简单实践
28 0
【Spring系列】Sping VS Sping Boot区别与联系
|
6天前
|
监控 Java 数据库连接
Spring高手之路17——动态代理的艺术与实践
本文深入分析了JDK和CGLIB两种动态代理技术在Spring框架中的应用。讨论了动态代理的基础概念,通过实例展示了如何实现和应用这两种方法,并比较了它们的性能差异及适用场景。进一步,探讨了在动态代理中实现熔断限流和日志监控的策略,以及如何利用动态代理优化Spring应用的设计和功能。
14 6
Spring高手之路17——动态代理的艺术与实践
|
2月前
|
XML 监控 druid
【Java专题_02】springboot+mybatis+pagehelper分页插件+druid数据源详细教程
【Java专题_02】springboot+mybatis+pagehelper分页插件+druid数据源详细教程