新書推薦:
《
甲骨文丛书·中华早期帝国:秦汉史的重估
》
售價:HK$
300.2
《
欲望与家庭小说
》
售價:HK$
101.2
《
惜华年(全两册)
》
售價:HK$
72.2
《
甲骨文丛书·古代中国的军事文化
》
售價:HK$
99.7
《
中国王朝内争实录(套装全4册):从未见过的王朝内争编著史
》
售價:HK$
250.7
《
半导体纳米器件:物理、技术和应用
》
售價:HK$
181.7
《
创客精选项目设计与制作 第2版 刘笑笑 颜志勇 严国陶
》
售價:HK$
63.3
《
佛山华家班粤菜传承 华家班59位大厨 102道粤菜 图文并茂 菜式制作视频 粤菜故事技法 佛山传统文化 广东科技
》
售價:HK$
227.7
|
編輯推薦: |
从0到1 ,决战Spring Boot,通过实际案例解决各种坑
|
內容簡介: |
Spring Boot框架是目前微服务框架的*选择之一。本书采用Spring Boot 2.0.3版本讲解,从零起步系统深入地剖析了Spring Boot的核心技术。从功能点出发,每一章都是不同的Spring Boot应用之旅。全书分为14章,第1章和第2章是学习Spring Boot的入门阶段,从Spring Boot简介到开发环境部署等,让读者对Spring Boot有一个初步的认识;第3章到第10章是Spring Boot的融合阶段,介绍了Spring Boot搭建Web项目、操作数据库、使用缓存、日志、整合安全框架、结合消息队列和搜索框架,这些都是日常开发中一定会用到的内容,经过这个阶段的学习,会让读者熟练地运用Spring Boot进行敏捷开发。第11章和第12章是Spring Boot的拓展阶段,主要介绍了Spring Boot的一些常用的功能和如何在实际应用中的部署。第13章和第14章是Spring Boot的实战阶段,经过这两章的学习,使读者对Spring Boot的运用更加熟练,掌握实际项目的开发技能。 本书的特点是示例代码丰富,实用性和系统性较强,读者可以直接还原书中的示例。本书适用于初学者、Java开发人员、Spring爱好者和架构师。
|
關於作者: |
杨洋,网名:大老杨,高级Java工程师,热衷于各种主流技术,长期钻研微服务,对Spring Boot和Spring Cloud有深入的研究,并且具备丰富的实战经验。目前在北京一家金融公司担任技术负责人,负责公司主要产品的开发和维护,长期活跃于各大技术论坛、博客,分享新技术与开发经验。
|
目錄:
|
目 录
第1章 Spring Boot概述 1
1.1 Spring Boot简介 1
1.2 Spring Boot的特点 2
1.2.1 快速构建项目 2
1.2.2 嵌入式Web容器 3
1.2.3 易于构建任何应用 3
1.2.4 自动化配置 3
1.2.5 开发者工具 4
1.2.6 强大的应用监控 4
1.2.7 默认提供测试框架 4
1.2.8 可执行Jar部署 4
1.2.9 IDE多样性 4
1.3 为什么要学习Spring Boot 5
1.3.1 简化工作 5
1.3.2 微服务时代 5
1.3.3 社区背景强大 6
1.3.4 市场需求 6
1.4 Spring Boot的发展历史 7
1.4.1 发布里程碑(2013.8.6) 7
1.4.2 Spring Boot 1.0(2014.4) 7
1.4.3 Spring Boot 1.1(2014.6) 8
1.4.4 Spring Boot 1.2(2015.3) 8
1.4.5 Spring Boot 1.3(2016.12) 8
1.4.6 Spring Boot 1.4(2017.1) 8
1.4.7 Spring Boot 1.5(2017.2) 9
1.4.8 Spring Boot 2.0(2018.3) 9
1.5 小结 10
第2章 走进Spring Boot 11
2.1 环境搭建 11
2.1.1 JDK安装 11
2.1.2 IntelliJ IDEA的安装 12
2.1.3 Maven的安装 12
2.1.4 IntelliJ IDEA内配置JDK和
Maven 15
2.2 新建Spring Boot项目 16
2.2.1 开始创建项目 16
2.2.2 配置JDK版本和Initializr Service URL 17
2.2.3 配置Project Metadata信息 17
2.2.4 配置Spring Boot版本及默认
引入组件 18
2.2.5 配置项目名称和项目位置 18
2.3 项目工程介绍 19
2.3.1 Java类文件 20
2.3.2 资源文件 20
2.3.3 测试类文件 20
2.3.4 pom文件 21
2.4 运行项目 22
2.5 小结 22
第3章 Spring Boot的Web之旅 23
3.1 Spring Boot的第一个Web项目 23
3.1.1 加入Web依赖 23
3.1.2 创建Controller 23
3.1.3 测试运行 24
3.2 WebFlux的使用 25
3.2.1 添加WebFlux依赖 25
3.2.2 创建一个处理方法类 26
3.2.3 创建一个Router类 26
3.2.4 测试运行 27
3.3 使用热部署 27
3.4 配置文件 28
3.4.1 配置文件类型 28
3.4.2 自定义属性 28
3.4.3 使用随机数 29
3.4.4 多环境配置 31
3.4.5 自定义配置文件 31
3.5 使用页面模板 32
3.5.1 使用Thymeleaf 32
3.5.2 使用FreeMarker 35
3.5.3 使用传统JSP 37
3.6 使用WebJars 39
3.7 国际化使用 41
3.8 文件的上传和下载 44
3.9 小结 48
第4章 Spring Boot的数据库之旅 49
4.1 使用数据库 49
4.1.1 使用MySQL数据库 49
4.1.2 使用SQL Server数据库 50
4.1.3 使用Oracle数据库 51
4.1.4 使用MongoDB数据库 55
4.1.5 使用Neo4j数据库 56
4.1.6 使用Redis数据库 57
4.1.7 使用Memcached数据库 58
4.2 使用JDBC操作数据库 58
4.2.1 JDBC依赖配置 59
4.2.2 配置数据库信息 59
4.2.3 创建实体类 60
4.2.4 使用Controller进行测试 60
4.3 使用JPA操作数据库 68
4.3.1 JPA介绍 68
4.3.2 JPA依赖配置 68
4.3.3 配置文件 69
4.3.4 创建实体对象 69
4.3.5 创建数据操作层 71
4.3.6 简单测试运行 73
4.3.7 JPA扩展学习 74
4.3.8 基于WebFlux的使用 75
4.4 使用MyBatis操作数据库 80
4.4.1 MyBatis简介 80
4.4.2 MyBatis依赖配置 80
4.4.3 配置文件 80
4.4.4 基于XML的使用 82
4.4.5 基于注解使用 85
4.4.6 测试运行 85
4.4.7 Mybatis-Generator插件学习 87
4.4.8 PageHelper插件 96
4.4.9 Mybatis-Plus插件 97
4.5 配置多数据源 101
4.5.1 多数据源情况分析 102
4.5.2 配置多数据源 102
4.5.3 基于JPA使用多数据源 105
4.5.4 基于MyBatis使用多数据 106
4.6 使用Druid数据库连接池 108
4.6.1 Druid简介 108
4.6.2 配置Druid 109
4.6.3 操作数据库 114
4.6.4 Druid监控页面介绍 115
4.7 小结 121
第5章 Spring Boot的缓存之旅 122
5.1 使用Spring Cache 122
5.1.1 Spring Cache简介 122
5.1.2 配置Spring Cache依赖 124
5.1.3 测试运行 125
5.1.4 验证缓存 126
5.2 使用Redis 127
5.2.1 Redis简介 127
5.2.2 项目配置 127
5.2.3 测试运行 129
5.2.4 使用Redis缓存 130
5.3 使用Memcached 132
5.3.1 Memcached简介 132
5.3.2 配置Memcached依赖 132
5.3.3 使用Memcached缓存 137
5.3.4 Redis与Memcached的区别 138
5.4 小结 138
第6章 Spring Boot的日志之旅 139
6.1 Logback日志 139
6.1.1 Logback简介 139
6.1.2 日志格式 140
6.1.3 控制台输出 140
6.1.4 日志文件输出 141
6.1.5 日志级别 141
6.1.6 日志配置 142
6.1.7 基于XML配置日志 142
6.2 Log4j日志 145
6.2.1 Log4j简介 146
6.2.2 Spring Boot使用Log4j 146
6.2.3 控制台输出 146
6.2.4 日志文件输出 147
6.3 Log4j 2日志 148
6.3.1 Log4j 2简介 148
6.3.2 Spring Boot使用Log4j 2 150
6.3.3 控制台输出 151
6.3.4 日志文件输出 152
6.3.5 异步日志 152
6.4 ELK日志收集 155
6.4.1 ELK日志收集流程介绍 155
6.4.2 ELK安装 155
6.4.3 ELK配置 157
6.4.4 使用Kibana查看日志 159
6.4.5 Spring Boot直接输出到
Logstash 162
6.4.6 ELK日志收集优化方案及
建议 163
6.5 小结 164
第7章 Spring Boot的安全之旅 165
7.1 使用Shiro安全管理 165
7.1.1 什么是Shiro 165
7.1.2 使用Shiro做权限控制 167
7.2 使用Spring Security 177
7.2.1 Spring Security简介 177
7.2.2 使用Spring Security做权限
控制 178
7.3 小结 184
第8章 Spring Boot的监控之旅 185
8.1 使用actuator监控 185
8.1.1 actuator是什么 185
8.1.2 如何使用actuator 185
8.1.3 actuator监控介绍 186
8.1.4 保护HTTP端点 188
8.1.5 健康信息 190
8.1.6 自定义应用程序信息 192
8.1.7 自定义管理端点路径 192
8.2 使用Admin监控 193
8.2.1 什么是Spring Boot Admin 193
8.2.2 设置Spring Boot Admin
Server 193
8.2.3 Spring Cloud Eureka 194
8.2.4 Spring Boot Admin Client的
使用 197
8.2.5 安全验证 202
8.2.6 JMX-bean管理 203
8.2.7 通知 203
8.3 Prometheus Grafana监控 207
8.3.1 Prometheus的安装 207
8.3.2 Grafana的安装 208
8.3.3 Spring Boot项目使用
Prometheus 208
8.3.4 Prometheus配置 210
8.3.5 启动Grafana 211
8.4 小结 213
第9章 Spring Boot的消息之旅 214
9.1 RabbitMQ消息队列 214
9.1.1 RabbitMQ介绍 214
9.1.2 RabbitMQ的几种角色 215
9.1.3 RabbitMQ的几种模式 216
9.1.4 Spring Boot使用RabbitMQ 218
9.2 Kafka消息队列 226
9.2.1 Kafka介绍 226
9.2.2 Spring Boot使用Kafka 228
9.3 RocketMQ消息队列 230
9.3.1 RocketMQ介绍 230
9.3.2 Spring Boot使用RocketMQ 231
9.4 消息队列对比 236
9.5 小结 238
第10章 Spring Boot的搜索之旅 239
10.1 使用Solr 239
10.1.1 Solr简介 239
10.1.2 Spring Boot使用Solr 240
10.2 使用Elasticsearch 246
10.2.1 Elasticsearch简介 246
10.2.2 Spring Boot使用
Elasticsearch 246
10.2.3 使用Elasticsearch Repository
进行操作 247
10.2.4 使用Elasticsearch Template
进行操作 248
10.2.5 非聚合查询 249
10.2.6 聚合查询 251
10.2.7 复杂查询练习 252
10.3 搜索引擎对比 256
10.3.1 技术背景 256
10.3.2 热度比较 258
10.3.3 集群部署 259
10.3.4 数据格式 259
10.3.5 效率 259
10.4 小结 259
第11章 Spring Boot的小彩蛋 260
11.1 修改启动Banner 260
11.1.1 启动Banner介绍 260
11.1.2 启动Banner修改 263
11.2 使用LomBok让编程更简单 264
11.2.1 什么是LomBok 264
11.2.2 IntelliJ IDEA安装Lombok
插件 264
11.2.3 如何使用LomBok 265
11.3 邮件发送 266
11.3.1 在Spring Boot中使用邮件
发送 266
11.3.2 基础配置信息 267
11.3.3 文本邮件发送 268
11.3.4 网页邮件发送 269
11.3.5 附件邮件发送 270
11.3.6 嵌入静态资源邮件发送 271
11.4 三器的使用 272
11.4.1 过滤器 272
11.4.2 拦截器 274
11.4.3 监听器 275
11.4.4 Spring Boot引用三器 276
11.4.5 测试 277
11.5 事务使用 278
11.5.1 事务介绍 278
11.5.2 在项目中使用事务 279
11.5.3 Spring事务拓展介绍 280
11.6 统一处理异常 282
11.6.1 异常介绍 282
11.6.2 Java异常分类 282
11.6.3 Spring Boot中统一处理
异常 284
11.7 使用AOP 284
11.7.1 AOP介绍 285
11.7.2 Spring Boot使用AOP 285
11.8 使用validator后台校验 288
11.9 使用Swagger构建接口文档 291
11.9.1 什么是Swagger 291
11.9.2 Swagger 2注解介绍 291
11.9.3 Spring Boot使用Swagger 293
11.10 使用ApiDoc构建接口文档 298
11.10.1 如何使用ApiDoc接口
文档 298
11.10.2 ApiDoc常用注解 298
11.10.3 Spring Boot使用ApiDoc 299
11.11 小结 302
第12章 Spring Boot打包部署 303
12.1 使用IDE启动 303
12.1.1 运行Spring Boot应用程序 303
12.1.2 IntelliJ IDEA启动多实例 304
12.2 使用Maven启动 305
12.3 JAR形式启动 305
12.3.1 使用命令将Spring Boot应用
程序打成JAR 305
12.3.2 IntelliJ IDEA打JAR包 306
12.4 War形式启动 307
12.4.1 创建项目 307
12.4.2 打War包部署到Tomcat 308
12.5 使用Docker构建Spring Boot
项目 308
12.5.1 Docker简介 309
12.5.2 安装Docker 309
12.5.3 Dockerfile 309
12.5.4 运行Docker镜像 310
12.6 使用Jenkins自动化部署Spring
Boot应用 311
12.6.1 Jenkins简介 311
12.6.2 Spring Boot应用使用
Jenkins 311
12.7 小结 317
第13章 Spring Boot实战之博客
系统 318
13.1 博客的制作思路 318
13.1.1 博客布局介绍 318
13.1.2 博客功能介绍 319
13.2 博客模板制作 320
13.3 效果展示 325
13.4 依赖配置 328
13.5 配置文件 329
13.6 后台实体 330
13.6.1 文章表 330
13.6.2 标签表 332
13.6.3 链接表 333
13.6.4 消息表 333
13.6.5 博客访问记录表 334
13.6.6 博客配置表 335
13.7 主功能 336
13.7.1 博客页 336
13.7.2 搜索页 339
13.7.3 文章详情页 341
13.7.4 联系页 343
13.8 辅助功能 344
13.8.1 拦截器 344
13.8.2 定时器 345
13.8.3 初始化 346
13.9 小结 347
第14章 Spring Boot实战之博客后台
系统 350
14.1 博客后台的制作思路 350
14.1.1 博客后台布局介绍 350
14.1.2 博客功能介绍 351
14.2 博客后台模板制作 352
14.3 效果展示 352
14.4 依赖配置 356
14.5 配置文件 358
14.6 后台实体 359
14.6.1 用户表 359
14.6.2 角色表 360
14.7 主功能 361
14.7.1 首页 362
14.7.2 文章管理 363
14.8 辅助功能 368
14.8.1 拦截器 368
14.8.2 定时器 369
14.8.3 认证和授权 370
14.8.4 工具类 373
14.8.5 初始化方法 373
14.9 小结 374
参考文献 375
|
內容試閱:
|
前 言
微服务一词相信对很多开发者来说已经耳熟能详了。在我曾经工作的公司,还是使用单体项目来部署时,无论是打包还是运行都耗时耗力,这一直让我很苦恼。同时,每次需要创建新应用、构建项目配置Spring的时候也十分麻烦。一次偶然的情况,我接触了Spring Boot框架,开始对其约定优先配置的特性着迷了。这个由Pivotal团队进行维护开发的Spring Boot,版本更迭非常快,社区活跃度很高。我在闲暇之余查阅了国内很多招聘网站,原来已经有很多公司将Spring Boot作为必备技能。
此后,我花费了很长的时间翻看技术博客、官方文档等,深入学习Spring Boot框架。在公司接下来的项目中,都以Spring Boot为主来构建项目,并且成功地将很多使用Spring Boot的项目投入生产,Spring Boot框架的快速构建与部署与公司快速迭代版本的风格完美呼应。这是Spring Boot值得学习的一大原因。
本书沿袭我学习Spring Boot的路线,使用Spring Boot与当今常用的中间件结合,并且配备对应的实例代码。最后的两章项目实战是对Spring Boot的学习之路做出总结,为本书画上一个圆满的句号。希望读者阅读本书后能够有所收获。
如何阅读本书
在阅读本书的过程中,建议对照源代码按顺序学习。当然,如果对部分章节的内容比较熟悉,也可以直接跳过,学习需要巩固的章节。本书内容共分为14章,开发工具使用IntelliJ IDEA,Spring Boot版本为2.0.3,各章节内容说明如下:
第1章介绍Spring Boot框架的特点以及学习它的重要性,最后列出Spring Boot的历史版本,让读者对Spring Boot有一个大致的了解。
第2章介绍如何搭建Spring Boot的开发环境,通过使用IntelliJ IDEA构建Spring Boot项目,并且对Spring Boot项目的基础结构进行介绍。
第3章介绍如何使用Spring Boot开发Web应用,了解Spring MVC和Spring Web Flux的不同,最后学习Spring Boot的一些Web模板框架,让读者可以对Spring Boot开发Web应用游刃有余。
第4章和第5章都是基于Spring Boot对数据库的使用进行学习。其中,第4章从Spring Boot使用各种数据库的依赖和配置开始介绍,然后介绍当今Java语言流行的ORM框架的使用,最后学习Spring Boot使用Druid数据库连接池。第5章介绍Spring Boot常用缓存框架,最后对Redis和Memcached进行比较,让读者选择缓存时有一定的基础。
第6章介绍Spring Boot对几种常用日志框架的使用,最后介绍分布式情况下如何使用ELK进行日志收集。
第7章介绍当今比较常用的两种安全框架,并且使用详细的案例对二者进行运用。
第8章介绍Spring Boot如何进行监控,涉及当今Spring Boot框架常用的监控,使读者对Spring Boot的运行状态更加了解。
第9章介绍Spring Boot如何使用消息队列,分别从RabbitMQ、Kafka和RocketMQ的使用实例进行介绍,最后对三者进行比较,让读者在选择消息队列时有一定的借鉴。
第10章对Spring Boot的两大常用搜索框架进行详细的介绍,从普通增、删、改、查到复杂查询,让读者使用搜索框架时不再茫然。
第11章介绍使用Spring Boot时的一些小技巧,比如启动Banner、Lombok、邮件发送、事务、异常等。虽然知识略微零散,但是都是实用的技巧。
第12章介绍Spring Boot的多种部署方式,让读者可以根据实际情况部署自己的应用程序。
第13章和第14章分别使用博客系统和博客后台系统对Spring Boot的使用进行综合实战,这两个实战案例是对本书内容的总结。
本书读者对象
? 初学者
? Java开发人员
? 架构师
? Spring爱好者
本书技术支持
非常感谢大家能够购买和阅读本书。虽然完成本书尽了笔者最大的努力,但是由于笔者的精力和能力有限,在编写过程中难免会有一些疏漏和不足之外,希望各位读者不吝指正。关于本书的任何问题都可以发送电子邮件至yangyang@dalaoyang.cn与我交流。
源代码下载
本书所有源代码均上传至码云,地址是https:gitee.comdalaoyangspringboot_book。如果下载有问题,请发送电子邮件至booksaga@126.com,邮件主题为求Spring Boot 2实战之旅下载资源。
致谢
在编写本书时,我得到了很多人的帮助。
首先,感谢我的妻子,在我遇到困难时给予鼓励,在我迷茫时的开导,谢谢她在我编写本书的过程中承担了所有家务,并且不遗余力地支持我。
其次,感谢我的父母,感谢他们从小对我的抚育与培养,感谢他们对我事业的支持。
另外,还需要感谢一下泥瓦匠在百忙之中对本书的细心校对,让本书的一些细节更加完善。
最后,感谢清华大学出版社的王金柱编辑,感谢您在本书编写、出版整个过程中的辛勤付出。也要感谢清华大学出版社所有参与本书编辑和出版的老师们,感谢大家对本书的帮助。
杨 洋
2019年3月1日
|
|