如何使用具有 Java 配置的 CommandLineJobRunner 启动 Spring Batch Job

Nik*_*eek 6 java spring-batch spring-boot

我的批处理作业定义在基于 Java 的配置文件中。我已经看到CommandLineJobRunner可以用来启动作业,但作业定义应该在 .xml 中定义。我想用来CommandLineJobRunner运行在基于 java 的配置中定义的作业。

根据此处的文档:https://docs.spring.io/spring-batch/trunk/reference/html/configureJob.html#commandLineJobRunner,没有详细信息可以这样做。

我们能做到这一点吗?还有什么其他选择?

Mah*_*ine 2

的第一个参数CommandLineJobRunner可以是:

  • 包含作业定义的 xml 文件
  • 或者包含作业定义的配置类的完全限定名称

从 Spring Batch v4 开始,每个文档页面顶部都有一个切换开关,允许您显示 Java 或 Xml 配置中的示例。例如,当切换设置为“Java”时,此处的文档部分: https: //docs.spring.io/spring-batch/4.0.x/reference/html/job.html#runningJobsFromCommandLine显示了如何使用CommandLineJobRunner使用 Java 配置类:

$>java -cp your/class/path org.springframework.batch.core.launch.support.CommandLineJobRunner io.spring.EndOfDayJobConfiguration endOfDay schedule.date(date)=2007/05/05
Run Code Online (Sandbox Code Playgroud)

io.spring.EndOfDayJobConfiguration是包含作业定义的完全限定类名endOfDay

  • 如果传递了“@Configuration”类名就可以工作。示例 - `java -jar batchJar.jar CommandLineJobRunner com.test.configuration.BeanConfguration < jobName> <jobParams>` 。其中 BeanConfguration 用`@Configuration`注释 (2认同)