SpringBatch权威指南pdf下载pdf下载

SpringBatch权威指南百度网盘pdf下载

作者:
简介:本篇主要提供SpringBatch权威指南pdf下载
出版社:清华大学出版社
出版时间:2020-12
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

产品特色

内容简介

主要内容:

* 探索Spring Batch 4中的新特性。

* 使用Spring Batch项目在云环境中完成有限的批处理任务。

* 通过一些示例,理解z新的基于Java和Spring Boot的配置技术

* 掌握复杂场景和云环境中的批处理

* 开发能够运行在现代平台上的批处理应用

* 除了Spring Batch,使用Spring Portfolio的其他部分开发关键任务型批处理应用


作者简介

Michael T. Minella是一位软件工程师、作家和演说家,拥有超过18年的专业经验。Michael是Pivotal的软件工程主管,领导了Spring Batch和Spring Cloud Task项目,他也是JSR-352(Java Batch)的专家组成员。另外,他还是一名Java Champion和JavaOne Rockstar,曾在许多不同的Java国际会议上发表演讲。

在日常工作外,Michael还在播客OffHeap上扮演“脾气暴躁的人”。他个人对信息安全话题(InfoSec)也很感兴趣。Michael的爱好包括摄影和木工,他和爱人Erica、孩子Addison生活在一起。


目录

目 录


第1章 批处理和Spring 1

1.1 批处理的历史 2

1.2 批处理面临的挑战 3

1.3 为什么使用Java进行批处理 4

1.4 Spring Batch的其他用途 5

1.5 Spring Batch框架 7

1.5.1 使用Spring定义作业 8

1.5.2 管理作业 9

1.5.3 本地和远程的并行化 9

1.5.4 标准化I/O 10

1.5.5 Spring Batch生态系统的其他部分 10

1.5.6 Spring的所有特性 10

1.6 如何阅读本书 11

1.7 本章小结 11

第2章 Spring Batch入门 13

2.1 批处理的架构 13

2.1.1 深入讨论作业和步骤 14

2.1.2 执行作业 15

2.1.3 并行化 16

2.1.4 文档 18

2.2 项目设置 19

2.2.1 获取Spring Batch 19

2.2.2 IntelliJ IDEA 21

2.3 “Hello,World!”示例程序 22

2.4 运行作业 25

2.5 本章小结 26

第3章 示例作业 27

3.1 了解敏捷开发 27

3.1.1 通过用户故事捕捉需求 28

3.1.2 使用测试驱动开发捕捉设计 29

3.1.3 使用版本控制系统 29

3.1.4 在真正的开发环境中工作 30

3.2 理解作业需求 30

3.3 设计批处理作业 34

3.3.1 作业描述 35

3.3.2 理解数据模型 36

3.4 本章小结 37

第4章 理解作业和步骤 39

4.1 作业介绍 39

4.2 配置作业 41

4.2.1 基本的作业配置 41

4.2.2 作业参数 43

4.2.3 使用作业监听器 55

4.2.4 执行上下文 58

4.2.5 操作ExecutionContext 58

4.3 使用步骤 62

4.3.1 Tasklet和基于块的处理 62

4.3.2 步骤的配置 63

4.3.3 理解其他类型的Tasklet 65

4.3.4 步骤流 80

4.4 本章小结 95

第5章 作业存储库和元数据 97

5.1 作业存储库是什么 97

5.1.1 使用关系数据库 97

5.1.2 使用内存存储库 101

5.2 配置批处理基础设施 101

5.2.1 BatchConfigurer接口 101

5.2.2 自定义JobRepository 102

5.2.3 自定义TransactionManager 103

5.2.4 自定义JobExplorer 104

5.2.5 自定义JobLauncher 105

5.2.6 配置数据库 106

5.3 使用元数据 106

5.4 本章小结 110

第6章 运行作业 111

6.1 使用Spring Boot启动作业 111

6.2 使用REST API启动作业 113

6.3 使用Quartz进行调度 118

6.4 停止作业 121

6.4.1 自然结束 121

6.4.2 以编程方式结束 122

6.4.3 错误处理 134

6.5 控制作业的重启 136

6.5.1 阻止作业再次执行 136

6.5.2 配置重启次数 137

6.5.3 重新运行一个完整的步骤 138

6.6 本章小结 139

第7章 ItemReader 141

7.1 ItemReader接口 141

7.2 文件输入 142

7.2.1 平面文件 142

7.2.2 XML文件 167

7.3 JSON 172

7.4 数据库输入 174

7.4.1 JDBC 174

7.4.2 Hibernate 180

7.4.3 JPA 184

7.4.4 存储过程 186

7.4.5 Spring Data 187

7.5 现有的服务 191

7.6 自定义输入 194

7.7 错误处理 198

7.7.1 跳过记录 199

7.7.2 把无效的记录记入日志 200

7.7.3 处理没有输入的情况 202

7.8 本章小结 203

第8章 ItemProcessor 205

8.1 ItemProcessor概述 205

8.2 使用Spring Batch提供的ItemProcessor 206

8.2.1 ValidatingItemProcessor 207

8.2.2 输入校验 207

8.2.3 ItemProcessorAdapter 213

8.2.4 ScriptItemProcessor 215

8.2.5 CompositeItemProcessor 216

8.3 编写自己的条目处理器 220

8.4 本章小结 222

第9章 ItemWriter 223

9.1 ItemWriter概述 224

9.2 基于文件的ItemWriter 225

9.2.1 FlatFileItemWriter 225

9.2.2 StaxEventItemWriter 235

9.3 基于数据库的ItemWriter 239

9.3.1 JdbcBatchItemWriter 239

9.3.2 HibernateItemWriter 244

9.3.3 JpaItemWriter 249

9.4 NoSQL ItemWriter 252

9.4.1 MongoDB 252

9.4.2 Noe4j 255

9.4.3 Pivotal Gemfire和Apache Geode 259

9.4.4 Repository抽象 263

9.5 输出到其他目标的ItemWriter 266

9.5.1 ItemWriterAdapter 266

9.5.2 PropertyExtractingDelegating-ItemWriter 268

9.5.3 JmsItemWriter 271

9.5.4 SimpleMailMessage-ItemWriter 275

9.6 复合的ItemWriter 280

9.6.1 MultiResource-ItemWriter 280

9.6.2 CompositeItemWriter 288

9.6.3 ClassifierComposite-ItemWriter 291

9.7 本章小结 294

第10章 示例应用 297

10.1 回顾银行对账单作业 297

10.2 配置新项目 298

10.3 导入客户数据 300

10.3.1 验证客户ID 306

10.3.2 写入客户更新 308

10.4 导入交易数据 311

10.4.1 读取交易 313

10.4.2 写入交易 314

10.5 计算当前余额 315

10.5.1 读取交易 316

10.5.2 更新账户余额 316

10.6 生成对账单 317

10.6.1 读取对账单数据 317

10.6.2 为对账单添加账户信息 320

10.6.3 写对账单 322

10.7 本章小结 326

第11章 伸缩和调优 327

11.1 分析批处理作业的性能 327

11.1.1 VisualVM之旅 328

11.1.2 分析Spring Batch应用的性能 331

11.2 伸缩作业 337

11.2.1 多线程步骤 337

11.2.2 并行步骤 339

11.2.3 组合使用AsyncItemProcessor和AsyncItemWriter 344

11.2.4 分区 346

11.2.5 远程分块 360

11.3 本章小结 365

第12章 云原生的批处理 367

12.1 “12要素应用” 367

12.1.1 代码库 368

12.1.2 依赖 368

12.1.3 配置 368

12.1.4 支持服务 368

12.1.5 构建、发布、运行 369

12.1.6 进程 369

12.1.7 端口绑定 369

12.1.8 并发 369

12.1.9 可丢弃性 369

12.1.10 开发环境与线上环境的等价 370

12.1.11 日志 370

12.1.12 管理进程 370

12.2 一个简单的批处理作业 370

12.3 断路器 376

12.4 外部化配置 379

12.4.1 Spring Cloud Config 379

12.4.2 通过Eureka进行服务绑定 381

12.5 批处理过程的编排 384

12.5.1 Spring Cloud Data Flow 385

12.5.2 Spring Cloud Task 386

12.5.3 注册和运行任务 387

12.6 本章小结 390

第13章 批处理的测试 391

13.1 使用JUnit和Mockito进行单元测试 391

13.1.1 JUnit 392

13.1.2 mock对象 394

13.1.3 Mockito 395

13.2 使用Spring的实用工具进行集成测试 398

13.2.1 使用Spring进行通用集成测试 398

13.2.2 测试Spring Batch 400

13.3 本章小结 408


前言/序言

前 言



Spring Batch是我深度参与的第一个开源项目。在我的记忆中,有两件事拖延了Spring Batch 1.0的发布:一是确保服务质量(Quality of Service,QoS)特性在实际工作中发挥作用;二是在API的设计上需要投入大量的精力。无论如何,错误是不可避免的,但我认为,至少可以说我们尽了最大努力,让生活有了一个良好的开端。

如果回顾一下Spring Batch的发展历程,你就会发现它起源于批处理领域,并且诞生于世界各地的许多企业长时间不断重复发明的过程之中。我第一次看到这些代码是在2006年,当时是Rob Harrop在伦敦一家银行做咨询工作时写的一个很小的原型。在我们将Spring Batch的一些有用特性分离出来,以便在其他项目中共享之后,这些部分最终在Spring Retry中完成。Spring Batch剩下的大部分,以及Spring Batch面向状态机的世界观,都来自与埃森哲的合作。从那时起,有太多的贡献者加入,在此无法一一列出,但值得特别提及的是Lucas Ward,他是Spring Batch在早期的另一位家长和看护者。我还记得,Robert Kasanicky和Dan Garrette为Spring Batch 1.0在2008年的成功发布做出过巨大贡献。

以上贡献者也为Spring Batch 2.0在2010年的成功发布发挥了重要作用,我们在Spring Batch 2.0中引入了chunk的概念以及一些特性,以支持分布式处理、并行处理和Java 5的新语言特性。chunk(“块”)是可以一起处理的一组数据项,这为提高效率和可伸缩性提供了可能。Spring Batch 2.0在很长一段时间里代表最高的技术水平,并且在JSR-352规范启动时,成为其中的一部分。来自埃森哲的Wayne Lund在Spring Batch项目的早期就已加入其中,他也是JSR-352专家组的一员,现在是Pivotal的平台架构师。

那时候,Michael Minella也是JSR-352专家组的成员,他在现实生活中大量地使用Spring Batch并撰写了一本书。当他在2012年加入Spring团队时,Spring正好开始Spring Batch 3.0的准备和发布工作。在Spring Batch 3.0中,我们第一次看到了@EnableBatchProcessing注解,并且将重心从XML配置转到使用Java进行配置。Michael很快就以项目负责人的角色接管了这个项目,领导Spring Batch的3.x系列版本一直到4.0版本。在4.0版本中,Java 8成为基线,并且添加了一些新的流畅风格(fluent-style)的配置构建器。与Spring Cloud Data Flow的连接以及分布式处理的工业化也在这一时期发生。在2018年年初,Mahmoud Ben Hassine作为新的项目联合负责人加入进来,他一直在帮助Michael推动Spring Batch,并仔细听取了许多用户的反馈。

所以,在《Spring Batch权威指南》写作期间,Spring Batch已经发展了十年,期间也不断有优秀的贡献者加入进来。在未来几年里,Spring Batch肯定还有很多事情要做,因为批处理似乎永远不会消失。这确实很有意思。


Dave Syer,Spring Batch项目创始人

2019年于伦敦