批量应用
当人们在Spring Boot应用中使用Spring Batch时,常常会有许多疑问。 本节将回答这些问题。
指定批处理数据源
默认情况下,批处理应用需要数据来源用来存储工作详情。
Spring Batch预计会有一首单曲数据来源默认。
让它使用数据来源除了应用程序的主体数据来源,宣告a数据来源豆子,注释其@Bean方法:@BatchDataSource.
如果你这样做并且想要两个数据源(比如保留主数据的自动配置)数据来源),设置默认候选人属性@Bean注释false.
要获得更大的控制权,可以添加@EnableBatchProcessing给你的其中一位@Configuration类或扩展DefaultBatchConfiguration.
参见 API 文档@EnableBatchProcessing和DefaultBatchConfiguration更多细节请阅读。
有关Spring Batch的更多信息,请参见Spring Batch项目页面。
指定批处理事务管理器
类似于“指定批处理数据源”,你可以定义一个PlatformTransactionManager用于批处理,通过注释其@Bean方法:@BatchTransactionManager.
如果你这样做并且想要两个事务管理器(例如保留自动配置PlatformTransactionManager),设置默认候选人属性@Bean注释false.
命令行运行
Spring Boot 会将任何以 为 的命令行参数转换为属性,以添加到--环境,参见访问命令行属性。
这不应用于向批处理作业传递参数。
要在命令行中指定批处理参数,请使用常规格式(即不含 ),如下示例所示:--
$ java -jar myapp.jar someParameter=someValue anotherParameter=anotherValue
如果你指定了 的性质环境在命令行中,作业会忽略它。
请考虑以下命令:
$ java -jar myapp.jar --server.port=7070 someParameter=someValue
这只为批处理作业提供了一个参数:someParameter=someValue.
重新启动已停止或失败的工作
重新开始失败的工作,所有参数(识别和非识别)都必须在命令行重新指定。
非标识参数不会从之前的执行中复制。
这使得它们可以被修改或移除。
当你使用自定义时JobParametersIncrementer你必须收集由递增器管理的所有参数,以重新启动失败的执行。 |