编辑推荐

适读人群:各类Java微服务开发人员,Spring开发人员,互联网技术爱好者,微服务开发人员,由于JavaEE在互联网的强势地位,拥有的读者比较广阔。

-来自一线开发者的实战经验总结,赠送作者讲解的部分配套视频课程

-从理论到实践,全面介绍SpringBoot的原理和应用

-以高并发场景作为实践案例,循序渐进阐述SpringBoot实用技巧

-结合主流持久层框架MyBatis,讲述企业级SpringBoot开发要点

当前互联网技术盛行,以Spring框架为主导的Java互联网技术成了主流,而基于Spring技术衍生出来的SpringBoot,采用了“约定优于配置”的思想,极大地简化了Spring框架的开发。随着近些年来微服务技术的流行,SpringBoot也成了时下炙手可热的热点技术。2017年9月,Spring框架出现了重大版本升级,从4.x版本升级为了5.x版本,随着这次升级,SpringBoot的版本也在2018年3月从1.x升级到了2.x。

深入浅出Spring Boot 2.x》重点讲解SpringBoot2.x技术,首先通过与传统SpringMVC开发进行对比让读者融入SpringBoot的开发中,然后再分别介绍全注解下的SpringIoC和AOP、结合MyBatis框架详解数据库编程和其事务开发、流行的NoSQL(Redis和MongoDB)技术、SpringMVC技术、REST风格网站搭建、SpringSecurity技术、Spring5.x新发布的WebFlux技术、高并发与锁、打包、测试、监控和SpringCloud入门等内容,从而帮助读者掌握企业级SpringBoot开发的要点。

深入浅出Spring Boot 2.x》涵盖的内容从理论到互联网微服务后端的实践,无论是Java互联网后端开发人员,或是从传统Spring项目转向SpringBoot的开发人员,还是Java微服务开发人员,都可以从《深入浅出Spring Boot 2.x》中获益。

内容简介

Spring框架是JavaEE开发的强有力的工具和事实标准,而SpringBoot采用“约定优于配置”的原则简化了Spring的开发,从而成为业界流行的微服务开发框架,已经被越来越多的企业采用。2018年3月SpringBoot的版本正式从1.x升级到了2.x,为了适应新潮流,《深入浅出Spring Boot 2.x》将对SpringBoot2.x技术进行深入讲解。

深入浅出Spring Boot 2.x》从一个很简单的工程开始讲解SpringBoot企业级开发,其内容包含全注解下的SpringIoC和AOP、数据库编程(JDBC、JPA和MyBatis)、数据库事务、NoSQL(Redis和MongoDB)技术、SpringMVC、Spring5新一代响应式框架WebFlux、互联网抢购业务、部署与监控、REST风格和SpringCloud分布式开发等。

深入浅出Spring Boot 2.x》内容紧扣互联网企业的实际要求,从全注解下Spring知识讲到SpringBoot的企业级开发,对于Java开发人员,尤其是初学SpringBoot的人员和需要从传统Spring转向SpringBoot开发的技术人员,具有很高的参考价值。

作者简介

杨开振,精通Java互联网技术开发和实践,拥有十余年一线企业开发经验,著有业内畅销书《深入浅出MyBatis技术原理与实战》和《JavaEE互联网轻量级框架整合开发——SSM框架(SpringMVC+Spring+MyBatis)和Redis实现》,目前成为自由职业人,在淘宝教育平台上从事JavaEE互联网相关的在线培训工作。

精彩书评

深入浅出Spring Boot 2.x》章节编排合理,深入浅出地阐述了SpringBoot2.x的原理与应用,以及当今较为流行的微服务系统经常用到的技术及原理,内容通俗易懂。以互联网常见的高并发场景作为实践案例,在同类书籍中更是难得一见。Java工程师、架构师一定不能错过《深入浅出Spring Boot 2.x》。

——梁华辉,源讯信息技术(香港)有限公司系统分析师

深入浅出Spring Boot 2.x》从原理到实践,详细介绍了SpringBoot的方方面面。无论你是Java新手,还是Spring老兵,《深入浅出Spring Boot 2.x》都是非常值得一读的。

——谭茂华,Java研发(管理)专家

深入浅出Spring Boot 2.x》详细介绍了SpringBoot2.x的重要知识点,循序渐进地讲述了SpringBoot2.x的开发技巧,还提供了恰当的案例参考,非常适合想要入门和深入学习SpringBoot的开发人员阅读。

——李如先,前海联易融金融服务有限公司技术总监

深入浅出Spring Boot 2.x》非常全面地介绍了使用SpringBoot2.x进行JavaWeb开发的方方面面。《深入浅出Spring Boot 2.x》可以帮助刚接触SpringBoot2.x的开发人员快速掌握这门技术,是学习SpringBoot2.x的优秀参考书籍。

——王江平,NAVERChina高级Java工程师

互联网行业发展迅速,互联网后端开发是以基于Java的Spring框架为主导的,SpringBoot极大地简化了Spring框架的开发,成为市场上的主流微服务技术。《深入浅出Spring Boot 2.x》是作者深入研究和实践并结合自己多年的工作经验编写而成的,系统地介绍了SpringBoot2.x的基础理论和应用实践,内容由浅入深,非常值得一读。

——尹胜,武汉群益信联软件有限公司CEO

深入浅出Spring Boot 2.x》作者是一位经验丰富的Java工程师。《深入浅出Spring Boot 2.x》从Spring基础知识开始,然后通过案例深入地介绍了SpringBoot2.x的原理和实践,最后还介绍了企业开发中主流的微服务框架等内容。对想要学习SpringBoot2.x的Java开发人员来说,《深入浅出Spring Boot 2.x》是一本非常好的参考资料。

——彭旭,前天猫Java开发工程师,现魅族架构师

目录

第1章SpringBoot来临 1

1.1 Spring的历史 1

1.2 注解还是XML 2

1.3 SpringBoot的优点 3

1.4 传统SpringMVC和SpringBoot的对比 4

第 2章聊聊开发环境搭建和基本开发 10

2.1 搭建SpringBoot开发环境 10

2.1.1 搭建Eclipse开发环境 10

2.1.2 搭建IntelliJIDEA开发环境 13

2.2 SpringBoot的依赖和自动配置 15

2.3 使用自定义配置 19

2.4 开发自己的SpringBoot项目 21

第3章 全注解下的SpringIoC 23

3.1 IoC容器简介 23

3.2 装配你的Bean 27

3.2.1 通过扫描装配你的Bean 27

3.2.2 自定义第三方Bean 31

3.3 依赖注入 32

3.3.1 注解@Autowired 34

3.3.2 消除歧义性——@Primary和@Quelifier 35

3.3.3 带有参数的构造方法类的装配 36

3.4 生命周期 37

3.5 使用属性文件 42

3.6 条件装配Bean 45

3.7 Bean的作用域 46

3.8 使用@Profile 48

3.9 引入XML配置Bean 50

3.10 使用SpringEL 51

第4章 开始约定编程——SpringAOP 53

4.1 约定编程 53

4.1.1 约定 53

4.1.2 ProxyBean的实现 57

4.1.3 总结 60

4.2 AOP的概念 61

4.2.1 为什么使用AOP 61

4.2.2 AOP术语和流程 64

4.3 AOP开发详解 65

4.3.1 确定连接点 65

4.3.2 开发切面 66

4.3.3 切点定义 67

4.3.4 测试AOP 68

4.3.5 环绕通知 71

4.3.6 引入 72

4.3.7 通知获取参数 74

4.3.8 织入 75

4.4 多个切面 77

第5章 访问数据库 82

5.1 配置数据源 83

5.1.1 启动默认数据源 83

5.1.2 配置自定义数据源 83

5.2 使用JdbcTemplate操作数据库 86

5.3 使用JPA(Hibernate)操作数据 90

5.3.1 概述 90

5.3.2 开发JPA 90

5.4 整合MyBatis框架 96

5.4.1 MyBatis简介 96

5.4.2 MyBatis的配置 97

5.4.3 SpringBoot整合MyBatis 101

5.4.4 MyBatis的其他配置 104

第6章 聊聊数据库事务处理 107

6.1 JDBC的数据库事务 108

6.2 Spring声明式事务的使用 110

6.2.1 Spring声明式数据库事务约定 110

6.2.2 @Transactional的配置项 111

6.2.3 Spring事务管理器 113

6.2.4 测试数据库事务 114

6.3 隔离级别 118

6.3.1 数据库事务的知识 118

6.3.2 详解隔离级别 120

6.4 传播行为 124

6.4.1 传播行为的定义 125

6.4.2 测试传播行为 126

6.5 @Transactional自调用失效问题 130

第7章 使用性能利器——Redis 134

7.1 spring-data-redis项目简介 135

7.1.1 spring-data-redis项目的设计 135

7.1.2 RedisTemplate 137

7.1.3 Spring对Redis数据类型操作的封装 139

7.1.4 SessionCallback和RedisCallback接口 141

7.2 在SpringBoot中配置和使用Redis 142

7.2.1 在SpringBoot中配置Redis 142

7.2.2 操作Redis数据类型 143

7.3 Redis的一些特殊用法 148

7.3.1 使用Redis事务 148

7.3.2 使用Redis流水线 149

7.3.3 使用Redis发布订阅 150

7.3.4 使用Lua脚本 153

7.4 使用Spring缓存注解操作Redis 156

7.4.1 缓存管理器和缓存的启用 156

7.4.2 开发缓存注解 157

7.4.3 测试缓存注解 163

7.4.4 缓存注解自调用失效问题 165

7.4.5 缓存脏数据说明 165

7.4.6 自定义缓存管理器 166

第8章 文档数据库——MongoDB 168

8.1 配置MongoDB 169

8.2 使用MongoTemplate实例 170

8.2.1 搭建开发环境 170

8.2.2 使用MongoTemplate操作文档 173

8.3 使用JPA 178

8.3.1 基本用法 178

8.3.2 使用自定义查询 180

第9章 初识SpringMVC 183

9.1 SpringMVC框架的设计 183

9.2 SpringMVC流程 184

9.3 定制SpringMVC的初始化 191

9.4 SpringMVC实例 192

9.4.1 开发控制器 193

9.4.2 视图和视图渲染 194

第 10章深入SpringMVC开发 197

10.1 处理器映射 197

10.2 获取控制器参数 198

10.2.1 在无注解下获取参数 199

10.2.2 使用@RequestParam获取参数 199

10.2.3 传递数组 200

10.2.4 传递JSON 200

10.2.5 通过URL传递参数 203

10.2.6 获取格式化参数 204

10.3 自定义参数转换规则 205

10.3.1 处理器获取参数逻辑 205

10.3.2 一对一转换器(Converter) 208

10.3.3 GenericConverter集合和数组转换 210

10.4 数据验证 211

10.4.1 JSR-303验证 211

10.4.2 参数验证机制 214

10.5 数据模型 217

10.6 视图和视图解析器 219

10.6.1 视图设计 219

10.6.2 视图实例——导出PDF文件 220

10.7 文件上传 224

10.7.1 SpringMVC对文件上传的支持 224

10.7.2 开发文件上传功能 226

10.8 拦截器 228

10.8.1 拦截器的设计 228

10.8.2 开发拦截器 229

10.8.3 多个拦截器的顺序 231

10.9 国际化 234

10.9.1 国际化消息源 234

10.9.2 国际化解析器 235

10.9.3 国际化实例——SessionLocaleResolver 237

10.10 SpringMVC拾遗 240

10.10.1 @ResponseBody转换为JSON的秘密 240

10.10.2 重定向 241

10.10.3 操作会话对象 243

10.10.4 给控制器增加通知 245

10.10.5 获取请求头参数 247

第 11章构建REST风格网站 249

11.1 REST简述 249

11.1.1 REST名词解释 249

11.1.2 HTTP的动作 250

11.1.3 REST风格的一些误区 251

11.2 使用SpringMVC开发REST风格端点 251

11.2.1 SpringMVC整合REST 252

11.2.2 使用Spring开发REST风格的端点 252

11.2.3 使用@RestController 260

11.2.4 渲染结果 261

11.2.5 处理HTTP状态码、异常和响应头 262

11.3 客户端请求RestTemplate 266

11.3.1 使用RestTemplate请求后端 267

11.3.2 获取响应头、状态码和资源交换 269

第 12章安全——SpringSecurity 271

12.1 概述和简单安全认证 271

12.2 使用WebSecurityConfigurerAdapter自定义 273

12.3 自定义用户服务信息 274

12.3.1 使用内存签名服务 275

12.3.2 使用数据库定义用户认证服务 276

12.3.3 使用自定义用户认证服务 279

12.4 限制请求 281

12.4.1 配置请求路径访问权限 282

12.4.2 使用Spring表达式配置访问权限 283

12.4.3 强制使用HTTPS 285

12.4.4 防止跨站点请求伪造 285

12.5 用户认证功能 287

12.5.1 自定义登录页面 287

12.5.2 启用HTTPBasic认证 288

12.5.3 登出 289

第 13章学点Spring其他的技术 291

13.1 异步线程池 291

13.1.1 定义线程池和开启异步可用 292

13.1.2 异步实例 292

13.2 异步消息 294

13.2.1 JMS实例——ActiveMQ 295

13.2.2 使用AMQP——RabbitMQ 299

13.3 定时任务 303

13.4 WebSocket应用 306

13.4.1 开发简易的WebSocket服务 306

13.4.2 使用STOMP 311

第 14章Spring5新框架——WebFlux 319

14.1 基础概念 319

14.1.1 响应式编程的宣言 320

14.1.2 Reactor模型 320

14.1.3 SpringWebFlux的概述 322

14.1.4 WebHandler接口和运行流程 323

14.2 通过SpringMVC方式开发WebFlux服务端 325

14.2.1 开发持久层 325

14.2.2 开发服务层 327

14.2.3 开发控制层 328

14.2.4 配置服务 330

14.2.5 客户端开发——WebClient 331

14.3 深入WebFlux服务端开发 335

14.3.1 类型转换器——Converter 335

14.3.2 验证器——Validator 337

14.3.3 访问静态资源 338

14.4 深入客户端开发 339

14.4.1 处理服务端错误和转换 339

14.4.2 设置请求头 341

14.5 使用路由函数方式开发WebFlux 342

14.5.1 开发处理器 342

14.5.2 开发请求路由 346

14.5.3 使用过滤器 347

第 15章实践一下——抢购商品 349

15.1 设计与开发 349

15.1.1 数据库表设计 349

15.1.2 使用MyBatis开发持久层 350

15.1.3 使用Spring开发业务层和控制层 353

15.1.4 测试和配置 355

15.2 高并发开发 357

15.2.1 超发现象 357

15.2.2 悲观锁 358

15.2.3 乐观锁 359

15.2.4 使用Redis处理高并发 365

第 16章部署、测试和监控 371

16.1 部署和运行 371

16.1.1 打包 371

16.1.2 运行项目 373

16.1.3 热部署 375

16.2 测试 376

16.2.1 构建测试类 376

16.2.2 使用随机端口和REST风格测试 377

16.2.3 Mock测试 378

16.3 Actuator监控端点 379

16.4 HTTP监控 381

16.4.1 查看敏感信息 382

16.4.2 shutdown端点 383

16.4.3 配置端点 385

16.4.4 自定义端点 387

16.4.5 健康指标项 389

16.5 JMX监控 392

第 17章分布式开发——SpringCloud 393

17.1 服务治理和服务发现——Eureka 395

17.1.1 配置服务治理节点 395

17.1.2 服务发现 397

17.1.3 配置多个服务治理中心节点 401

17.2 微服务之间的调用 403

17.2.1 Ribbon客户端负载均衡 403

17.2.2 Feign声明式调用 406

17.3 断路器——Hystrix 409

17.3.1 使用降级服务 410

17.3.2 启用Hystrix仪表盘 412

17.4 路由网关——Zuul 415

17.4.1 构建Zuul网关 415

17.4.2 使用过滤器 418

17.5 使用@SpringCloudApplication 421

附录 SpringBoot知识点补充 423


其他推荐