单步批处理作业Starters

本部分介绍了如何使用 Spring Cloud Task 中包含的 starter 开发一个 Spring Batch Job,通过使用该 starter,可以使用配置定义一个 Step,一个 ItemReader,或一个完整的单步 Spring Batch ItemWriter。有关 Spring Batch 的更多信息及其能力,请参见 Spring Batch 文档spring-doc.cadn.net.cn

获取Maven起步器时,请添加以下内容到你的构建中:spring-doc.cadn.net.cn

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-single-step-batch-job</artifactId>
    <version>2.3.0</version>
</dependency>

获取 Gradle 的Starters,请在构建文件中添加以下内容:spring-doc.cadn.net.cn

compile "org.springframework.cloud:spring-cloud-starter-single-step-batch-job:2.3.0"

定义一个任务

你可以使用Starters来定义从一个ItemReader或一个ItemWriter,到一个完整的Job的最小配置。 在本部分,我们定义哪些属性是必需的,以配置一个Jobspring-doc.cadn.net.cn

属性

开始时,Starters提供了一组属性,让你可以使用一个步骤配置作业的基本设置:spring-doc.cadn.net.cn

Table 1. 工作属性
属性 类型 默认值 描述

spring.batch.job.jobNamespring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

nullspring-doc.cadn.net.cn

职位名称。spring-doc.cadn.net.cn

spring.batch.job.stepNamespring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

nullspring-doc.cadn.net.cn

步骤的名称。spring-doc.cadn.net.cn

spring.batch.job.chunkSizespring-doc.cadn.net.cn

Integerspring-doc.cadn.net.cn

nullspring-doc.cadn.net.cn

每个事务要处理的项目数量。spring-doc.cadn.net.cn

在配置上述属性后,您就有一个具有单一分块步骤的任务。此分块步骤读取、处理和写入Map<String, Object>个实例作为项。然而,该步骤尚未执行任何操作。您需要配置一个ItemReader、一个可选的ItemProcessor以及一个ItemWriter来赋予它实际功能。要配置其中之一,您可以使用属性并配置其中一个提供了自动配置选项,或者可以使用标准Spring配置机制来配置自己的组件。spring-doc.cadn.net.cn

如果您配置了自定义项,则输入和输出类型必须与步骤中的其他项匹配。

spring-doc.cadn.net.cn

此Starters中的 ItemReader 实现和 ItemWriter 实现均使用 Map<String, Object> 作为输入和输出项目。spring-doc.cadn.net.cn

项目读取器实现的自动配置

此Starters为四种不同的 ItemReader 实现提供了自动配置:AmqpItemReaderFlatFileItemReaderJdbcCursorItemReaderKafkaItemReader。在本节中,我们概述了如何通过使用提供的自动配置来配置其中每一个。spring-doc.cadn.net.cn

AmqpItemReader

您可以使用AmqpItemReader通过AMQP从队列或主题读取。此ItemReader实现的自动配置取决于两组配置。AmqpTemplate的配置是第一部分。您既可以自己配置,也可以使用Spring Boot提供的自动配置。参见Spring Boot AMQP文档。一旦配置了AmqpTemplate,可以通过设置以下属性来启用批处理功能以支持它:spring-doc.cadn.net.cn

表2. AmqpItemReader 属性
属性 类型 默认值 描述

spring.batch.job.amqpitemreader.enabledspring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

falsespring-doc.cadn.net.cn

如果 true,自动配置将被执行。spring-doc.cadn.net.cn

spring.batch.job.amqpitemreader.jsonConverterEnabledspring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

truespring-doc.cadn.net.cn

指示是否应注册 Jackson2JsonMessageConverter 来解析消息。spring-doc.cadn.net.cn

有关更多信息,请参阅AmqpItemReader文档spring-doc.cadn.net.cn

FlatFileItemReader

FlatFileItemReader允许您从平面文件(如CSV和其他文件格式)中读取数据。要从文件中读取,您可以使用正常的Spring配置提供一些组件(LineTokenizerRecordSeparatorPolicyFieldSetMapperLineMapperSkippedLinesCallback)。您还可以使用以下属性来配置读取器:spring-doc.cadn.net.cn

表 3. FlatFileItemReader 属性
属性 类型 默认值 描述

spring.batch.job.flatfileitemreader.saveStatespring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

truespring-doc.cadn.net.cn

确定是否应为重启保存状态。<br>spring-doc.cadn.net.cn

spring.batch.job.flatfileitemreader.namespring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

nullspring-doc.cadn.net.cn

用于在ExecutionContext中提供唯一键的名称。spring-doc.cadn.net.cn

spring.batch.job.flatfileitemreader.maxItemcountspring-doc.cadn.net.cn

intspring-doc.cadn.net.cn

Integer.MAX_VALUEspring-doc.cadn.net.cn

从文件中读取的最大项目数。spring-doc.cadn.net.cn

spring.batch.job.flatfileitemreader.currentItemCountspring-doc.cadn.net.cn

intspring-doc.cadn.net.cn

0spring-doc.cadn.net.cn

已经读取的项目数量。在重新启动时使用。spring-doc.cadn.net.cn

spring.batch.job.flatfileitemreader.commentsspring-doc.cadn.net.cn

List<String>spring-doc.cadn.net.cn

空列表spring-doc.cadn.net.cn

一个字符串列表,用于指示文件中被注释的行(要忽略的行)。spring-doc.cadn.net.cn

spring.batch.job.flatfileitemreader.resourcespring-doc.cadn.net.cn

Resourcespring-doc.cadn.net.cn

nullspring-doc.cadn.net.cn

要读取的资源。spring-doc.cadn.net.cn

spring.batch.job.flatfileitemreader.strictspring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

truespring-doc.cadn.net.cn

如果设置为true,并且资源未找到,则读取器会抛出异常。spring-doc.cadn.net.cn

spring.batch.job.flatfileitemreader.encodingspring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

FlatFileItemReader.DEFAULT_CHARSETspring-doc.cadn.net.cn

读取文件时要使用的编码。spring-doc.cadn.net.cn

spring.batch.job.flatfileitemreader.linesToSkipspring-doc.cadn.net.cn

intspring-doc.cadn.net.cn

0spring-doc.cadn.net.cn

指示要跳过的文件开头行数。spring-doc.cadn.net.cn

spring.batch.job.flatfileitemreader.delimitedspring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

falsespring-doc.cadn.net.cn

指示文件是否为分隔符文件(CSV和其他格式)。此属性或spring.batch.job.flatfileitemreader.fixedLength在同一时间只能有一个为truespring-doc.cadn.net.cn

spring.batch.job.flatfileitemreader.delimiterspring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

DelimitedLineTokenizer.DELIMITER_COMMAspring-doc.cadn.net.cn

如果读取分隔符文件,则表示要解析的分隔符。spring-doc.cadn.net.cn

spring.batch.job.flatfileitemreader.quoteCharacterspring-doc.cadn.net.cn

charspring-doc.cadn.net.cn

DelimitedLineTokenizer.DEFAULT_QUOTE_CHARACTERspring-doc.cadn.net.cn

用于确定引用值所使用的字符。spring-doc.cadn.net.cn

spring.batch.job.flatfileitemreader.includedFieldsspring-doc.cadn.net.cn

List<Integer>spring-doc.cadn.net.cn

空列表spring-doc.cadn.net.cn

一个列表,用于确定记录中的哪些字段包含在条目中。spring-doc.cadn.net.cn

spring.batch.job.flatfileitemreader.fixedLengthspring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

falsespring-doc.cadn.net.cn

表示是否通过列号解析文件记录。此属性或spring.batch.job.flatfileitemreader.delimited在同一时间只能有一个为truespring-doc.cadn.net.cn

spring.batch.job.flatfileitemreader.rangesspring-doc.cadn.net.cn

List<Range>spring-doc.cadn.net.cn

空列表spring-doc.cadn.net.cn

要用来解析固定宽度记录的列范围列表。请参阅Range 文档spring-doc.cadn.net.cn

spring.batch.job.flatfileitemreader.namesspring-doc.cadn.net.cn

String []spring-doc.cadn.net.cn

nullspring-doc.cadn.net.cn

从记录中解析出的每个字段的名称列表。这些名称是从此ItemReader返回的项中的Map<String, Object>的键。
spring-doc.cadn.net.cn

spring.batch.job.flatfileitemreader.parsingStrictspring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

truespring-doc.cadn.net.cn

如果设置为true,则当无法映射字段时,映射会失败。spring-doc.cadn.net.cn

JDBC游标项读取器

JdbcCursorItemReader针对关系数据库运行查询,并迭代结果光标(ResultSet)以提供结果项。此自动配置让您能够提供一个PreparedStatementSetterRowMapper或两者都提供。您还可以使用以下属性来配置JdbcCursorItemReaderspring-doc.cadn.net.cn

表4. JdbcCursorItemReader 属性
属性 类型 默认值 描述

spring.batch.job.jdbccursoritemreader.saveStatespring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

truespring-doc.cadn.net.cn

确定状态是否应为重新启动而保存。spring-doc.cadn.net.cn

spring.batch.job.jdbccursoritemreader.namespring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

nullspring-doc.cadn.net.cn

用于在ExecutionContext中提供唯一键的名称。spring-doc.cadn.net.cn

spring.batch.job.jdbccursoritemreader.maxItemcountspring-doc.cadn.net.cn

intspring-doc.cadn.net.cn

Integer.MAX_VALUEspring-doc.cadn.net.cn

从文件中读取的最大项目数。spring-doc.cadn.net.cn

spring.batch.job.jdbccursoritemreader.currentItemCountspring-doc.cadn.net.cn

intspring-doc.cadn.net.cn

0spring-doc.cadn.net.cn

已经读取的项目数量。在重新启动时使用。spring-doc.cadn.net.cn

spring.batch.job.jdbccursoritemreader.fetchSizespring-doc.cadn.net.cn

intspring-doc.cadn.net.cn

提示驱动程序,指示每次调用数据库系统时要检索的记录数。为了获得最佳性能,通常希望将其设置为与块大小匹配。spring-doc.cadn.net.cn

spring.batch.job.jdbccursoritemreader.maxRowsspring-doc.cadn.net.cn

intspring-doc.cadn.net.cn

从数据库中读取的最大项目数。spring-doc.cadn.net.cn

spring.batch.job.jdbccursoritemreader.queryTimeoutspring-doc.cadn.net.cn

intspring-doc.cadn.net.cn

查询超时的毫秒数。spring-doc.cadn.net.cn

spring.batch.job.jdbccursoritemreader.ignoreWarningsspring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

truespring-doc.cadn.net.cn

确定读取器在处理时是否应该忽略SQL警告。spring-doc.cadn.net.cn

spring.batch.job.jdbccursoritemreader.verifyCursorPositionspring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

truespring-doc.cadn.net.cn

指示是否应在每次读取后验证游标的位置,以确保RowMapper不会使游标向前移动。spring-doc.cadn.net.cn

spring.batch.job.jdbccursoritemreader.driverSupportsAbsolutespring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

falsespring-doc.cadn.net.cn

指示驱动程序是否支持游标的位置绝对定位。spring-doc.cadn.net.cn

spring.batch.job.jdbccursoritemreader.useSharedExtendedConnectionspring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

falsespring-doc.cadn.net.cn

指示连接是否与其他处理共享(因此是事务的一部分)。spring-doc.cadn.net.cn

spring.batch.job.jdbccursoritemreader.sqlspring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

nullspring-doc.cadn.net.cn

从中读取SQL查询。spring-doc.cadn.net.cn

您还可以通过使用以下属性为读者指定特定的 JDBC DataSource:
JdbcCursorItemReader 属性
spring-doc.cadn.net.cn

属性 类型 默认值 描述

spring.batch.job.jdbccursoritemreader.datasource.enablespring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

falsespring-doc.cadn.net.cn

确定是否应启用 JdbcCursorItemReader DataSourcespring-doc.cadn.net.cn

jdbccursoritemreader.datasource.urlspring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

nullspring-doc.cadn.net.cn

数据库的 JDBC URL。spring-doc.cadn.net.cn

jdbccursoritemreader.datasource.usernamespring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

nullspring-doc.cadn.net.cn

数据库的登录用户名。spring-doc.cadn.net.cn

jdbccursoritemreader.datasource.passwordspring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

nullspring-doc.cadn.net.cn

数据库的登录密码。spring-doc.cadn.net.cn

jdbccursoritemreader.datasource.driver-class-namespring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

nullspring-doc.cadn.net.cn

JDBC驱动程序的完全限定名。spring-doc.cadn.net.cn

如果未指定jdbccursoritemreader_datasource,则JDBCCursorItemReader将使用默认的DataSource

KafkaItemReader

从Kafka主题中摄取数据分区很有用,这正是KafkaItemReader可以做到的。要配置KafkaItemReader,需要两个配置项。首先,需要使用Spring Boot的Kafka自动配置来配置Kafka(参见Spring Boot Kafka文档)。 一旦您使用Spring Boot配置了Kafka属性,就可以通过设置以下属性来配置KafkaItemReader本身:spring-doc.cadn.net.cn

表5. KafkaItemReader 属性
属性 类型 默认值 描述

spring.batch.job.kafkaitemreader.namespring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

nullspring-doc.cadn.net.cn

用于在ExecutionContext中提供唯一键的名称。spring-doc.cadn.net.cn

spring.batch.job.kafkaitemreader.topicspring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

nullspring-doc.cadn.net.cn

要从中读取的主题名称。spring-doc.cadn.net.cn

spring.batch.job.kafkaitemreader.partitionsspring-doc.cadn.net.cn

List<Integer>spring-doc.cadn.net.cn

空列表spring-doc.cadn.net.cn

要从中读取的分区索引列表。spring-doc.cadn.net.cn

spring.batch.job.kafkaitemreader.pollTimeOutInSecondsspring-doc.cadn.net.cn

longspring-doc.cadn.net.cn

30spring-doc.cadn.net.cn

操作poll()的超时时间。spring-doc.cadn.net.cn

spring.batch.job.kafkaitemreader.saveStatespring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

truespring-doc.cadn.net.cn

确定状态是否应为重新启动而保存。spring-doc.cadn.net.cn

原生编译

单步批处理的优势在于,当您使用JVM时,它允许您动态选择在运行时使用的读取器和写入器bean。但是,在使用本机编译时,您必须在构建时间而不是运行时确定读取器和写入器。<br/>以下示例展示了如何做到这一点:spring-doc.cadn.net.cn

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>process-aot</id>
            <goals>
                <goal>process-aot</goal>
            </goals>
            <configuration>
                <jvmArguments>
                    -Dspring.batch.job.flatfileitemreader.name=fooReader
                    -Dspring.batch.job.flatfileitemwriter.name=fooWriter
                </jvmArguments>
            </configuration>
        </execution>
    </executions>
</plugin>

ItemProcessor 配置

单步批处理作业自动配置接受一个ItemProcessor,如果在ApplicationContext内可用。如果找到正确类型的ItemProcessor<Map<String, Object>, Map<String, Object>>,则将其自动装配到步骤中。spring-doc.cadn.net.cn

ItemWriter 实现的自动配置

此Starters提供了对 ItemWriter 种实现的自动配置,这些实现与支持的 ItemReader 种实现相匹配:AmqpItemWriterFlatFileItemWriterJdbcItemWriterKafkaItemWriter。本节介绍如何使用自动配置来配置受支持的 ItemWriterspring-doc.cadn.net.cn

AmqpItemWriter

要向 RabbitMQ 队列写入数据,您需要两组配置。首先,您需要一个AmqpTemplate。最简单的方法是使用 Spring Boot 的RabbitMQ自动配置。有关详细信息,请参阅Spring Boot AMQP 文档spring-doc.cadn.net.cn

配置完AmqpTemplate后,您可以通过设置以下属性来配置AmqpItemWriterspring-doc.cadn.net.cn

表6. AmqpItemWriter 属性
属性 类型 默认值 描述

spring.batch.job.amqpitemwriter.enabledspring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

falsespring-doc.cadn.net.cn

如果为true,则自动配置运行。spring-doc.cadn.net.cn

spring.batch.job.amqpitemwriter.jsonConverterEnabledspring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

truespring-doc.cadn.net.cn

指示是否应注册 Jackson2JsonMessageConverter 来转换消息。spring-doc.cadn.net.cn

FlatFileItemWriter

要将文件作为步骤的输出写入,您可以配置FlatFileItemWriter。自动配置接受已显式配置的组件(例如LineAggregatorFieldExtractorFlatFileHeaderCallbackFlatFileFooterCallback)以及通过设置以下属性指定的组件:spring-doc.cadn.net.cn

表7. FlatFileItemWriter 属性
属性 类型 默认值 描述

spring.batch.job.flatfileitemwriter.resourcespring-doc.cadn.net.cn

Resourcespring-doc.cadn.net.cn

nullspring-doc.cadn.net.cn

要读取的资源。spring-doc.cadn.net.cn

spring.batch.job.flatfileitemwriter.delimitedspring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

falsespring-doc.cadn.net.cn

指示输出文件是否为分隔符文件。如果true,则spring.batch.job.flatfileitemwriter.formatted必须是falsespring-doc.cadn.net.cn

spring.batch.job.flatfileitemwriter.formattedspring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

falsespring-doc.cadn.net.cn

指示输出文件是否为格式化文件。如果true,则spring.batch.job.flatfileitemwriter.delimited必须是falsespring-doc.cadn.net.cn

spring.batch.job.flatfileitemwriter.formatspring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

nullspring-doc.cadn.net.cn

用于生成格式化文件输出的格式。通过使用String.format执行格式化。spring-doc.cadn.net.cn

spring.batch.job.flatfileitemwriter.localespring-doc.cadn.net.cn

Localespring-doc.cadn.net.cn

Locale.getDefault()spring-doc.cadn.net.cn

生成文件时要使用的Localespring-doc.cadn.net.cn

spring.batch.job.flatfileitemwriter.maximumLengthspring-doc.cadn.net.cn

intspring-doc.cadn.net.cn

0spring-doc.cadn.net.cn

记录的最大长度。如果为0,则大小无限制。spring-doc.cadn.net.cn

spring.batch.job.flatfileitemwriter.minimumLengthspring-doc.cadn.net.cn

intspring-doc.cadn.net.cn

0spring-doc.cadn.net.cn

最小记录长度。spring-doc.cadn.net.cn

spring.batch.job.flatfileitemwriter.delimiterspring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

,spring-doc.cadn.net.cn

分隔文件中用于分隔字段的Stringspring-doc.cadn.net.cn

spring.batch.job.flatfileitemwriter.encodingspring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

FlatFileItemReader.DEFAULT_CHARSETspring-doc.cadn.net.cn

写入文件时使用的编码。spring-doc.cadn.net.cn

spring.batch.job.flatfileitemwriter.forceSyncspring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

falsespring-doc.cadn.net.cn

指示在刷新时是否应将文件强制同步到磁盘。spring-doc.cadn.net.cn

spring.batch.job.flatfileitemwriter.namesspring-doc.cadn.net.cn

String []spring-doc.cadn.net.cn

nullspring-doc.cadn.net.cn

从记录中解析出的每个字段的名称列表。这些名称是通过此ItemWriter接收的项目的Map<String, Object>中的键。spring-doc.cadn.net.cn

spring.batch.job.flatfileitemwriter.appendspring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

falsespring-doc.cadn.net.cn

指示是否应在找到输出文件时将其追加到该文件中。spring-doc.cadn.net.cn

spring.batch.job.flatfileitemwriter.lineSeparatorspring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

FlatFileItemWriter.DEFAULT_LINE_SEPARATORspring-doc.cadn.net.cn

使用什么String来分隔输出文件中的行。spring-doc.cadn.net.cn

spring.batch.job.flatfileitemwriter.namespring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

nullspring-doc.cadn.net.cn

用于在ExecutionContext中提供唯一键的名称。spring-doc.cadn.net.cn

spring.batch.job.flatfileitemwriter.saveStatespring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

truespring-doc.cadn.net.cn

确定状态是否应为重新启动而保存。spring-doc.cadn.net.cn

spring.batch.job.flatfileitemwriter.shouldDeleteIfEmptyspring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

falsespring-doc.cadn.net.cn

如果设置为true,作业完成后会删除空文件(无输出)。spring-doc.cadn.net.cn

spring.batch.job.flatfileitemwriter.shouldDeleteIfExistsspring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

truespring-doc.cadn.net.cn

如果设置为true,并且在输出文件应该存在的位置找到文件,则在步骤开始之前会删除该文件。spring-doc.cadn.net.cn

spring.batch.job.flatfileitemwriter.transactionalspring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

FlatFileItemWriter.DEFAULT_TRANSACTIONALspring-doc.cadn.net.cn

指示读取器是否为事务队列(表示在失败时,已读取的项目会返回到队列中)。spring-doc.cadn.net.cn

Jdbc批量项目写入器

要将步骤的输出写入关系型数据库,此启动程序提供自动配置JdbcBatchItemWriter的功能。自动配置允许您通过设置以下属性来提供自己的ItemPreparedStatementSetterItemSqlParameterSourceProvider以及配置选项:spring-doc.cadn.net.cn

表格 8. JdbcBatchItemWriter 属性
属性 类型 默认值 描述

spring.batch.job.jdbcbatchitemwriter.namespring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

nullspring-doc.cadn.net.cn

用于在ExecutionContext中提供唯一键的名称。spring-doc.cadn.net.cn

spring.batch.job.jdbcbatchitemwriter.sqlspring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

nullspring-doc.cadn.net.cn

插入每个项目的SQL。spring-doc.cadn.net.cn

spring.batch.job.jdbcbatchitemwriter.assertUpdatesspring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

truespring-doc.cadn.net.cn

是否验证每个插入操作至少更新一条记录。spring-doc.cadn.net.cn

您还可以通过使用以下属性为编写器指定特定的JDBC数据源:
JdbcBatchItemWriter 属性spring-doc.cadn.net.cn

属性 类型 默认值 描述

spring.batch.job.jdbcbatchitemwriter.datasource.enablespring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

falsespring-doc.cadn.net.cn

确定是否应启用 JdbcCursorItemReader DataSourcespring-doc.cadn.net.cn

jdbcbatchitemwriter.datasource.urlspring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

nullspring-doc.cadn.net.cn

数据库的 JDBC URL。spring-doc.cadn.net.cn

jdbcbatchitemwriter.datasource.usernamespring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

nullspring-doc.cadn.net.cn

数据库的登录用户名。spring-doc.cadn.net.cn

jdbcbatchitemwriter.datasource.passwordspring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

nullspring-doc.cadn.net.cn

数据库的登录密码。spring-doc.cadn.net.cn

jdbcbatchitemreader.datasource.driver-class-namespring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

nullspring-doc.cadn.net.cn

JDBC驱动程序的完全限定名。spring-doc.cadn.net.cn

如果未指定jdbcbatchitemwriter_datasource,则JdbcBatchItemWriter将使用默认的DataSource

KafkaItemWriter

要将步骤输出写入 Kafka 主题,您需要 KafkaItemWriter。此Starters通过使用来自两个地方的设施为 KafkaItemWriter 提供自动配置。 第一个是 Spring Boot 的 Kafka 自动配置。(参见 Spring Boot Kafka 文档。) 其次,此Starters让您配置编写器上的两个属性。spring-doc.cadn.net.cn

表格 9. KafkaItemWriter 属性
属性 类型 默认值 描述

spring.batch.job.kafkaitemwriter.topicspring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

nullspring-doc.cadn.net.cn

要写入的Kafka主题。spring-doc.cadn.net.cn

spring.batch.job.kafkaitemwriter.deletespring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

falsespring-doc.cadn.net.cn

传递给写入器的项目是否都应作为删除事件发送到主题。spring-doc.cadn.net.cn

有关KafkaItemWriter的配置选项的更多信息,请参阅KafkaItemWiter文档spring-doc.cadn.net.cn

Spring AOT

在使用 Spring AOT 和 Single Step Batch Starter 时,您必须在编译时设置读取器和编写器的名称属性(除非您创建了读取器或编写器的 Bean)。为此,您必须将希望使用的读取器和编写器的名称作为参数或环境变量包含在引导 Maven 插件或 Gradle 插件中。例如,如果要在 Maven 中启用 FlatFileItemReaderFlatFileItemWriter,它看起来像这样:spring-doc.cadn.net.cn

    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <executions>
            <execution>
            <id>process-aot</id>
            <goals>
                <goal>process-aot</goal>
            </goals>
            </execution>
        </executions>
        <configuration>
            <arguments>
                <argument>--spring.batch.job.flatfileitemreader.name=foobar</argument>
                <argument>--spring.batch.job.flatfileitemwriter.name=fooWriter</argument>
            </arguments>
        </configuration>
    </plugin>