【问题标题】:how to launch Spring Batch Job using CommandLineJobRunner having Java configuration如何使用具有 Java 配置的 CommandLineJobRunner 启动 Spring Batch Job
【发布时间】:2018-08-21 08:52:15
【问题描述】:

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

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

我们甚至可以这样做吗?还有什么其他选择?

【问题讨论】:

  • Job 不需要在 XML 中定义。你对 Java 配置有兴趣吗?
  • @luboskrnac 我知道这一点。我只在 java config 中定义了工作。我的问题是如何使用 CommandLineRunner 启动在 jAva 配置中定义的作业。
  • 到目前为止你尝试了什么?你读过文档吗?
  • 是的。我做到了。在文档中,没有参考基于 java 的配置。我们需要提供 .xml 的路径,其中包含应用程序上下文、作业名称和参数的完整引用。没有提到基于 java 的配置。
  • @luboskrnac 见这里:docs.spring.io/spring-batch/trunk/reference/html/…。我没有看到使用基于 java 的配置的任何细节。

标签: java spring-boot spring-batch


【解决方案1】:

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

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

【讨论】:

  • 这实际上是行不通的。文档仍然要求提供 XML 文件,并且在仔细检查源代码后,CommandLineJobRunner 仍然使用 XmlBeanDefinitionReader 来尝试加载文件。你知道有什么其他方法可以做到这一点吗?
  • @Configuration 类名如果通过将起作用。示例 - java -jar batchJar.jar CommandLineJobRunner com.test.configuration.BeanConfguration < jobName> <jobParams> 。其中 BeanConfguration 用 @Configuration 注释
猜你喜欢
  • 2018-03-10
  • 2015-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-03
  • 1970-01-01
  • 2021-06-03
相关资源
最近更新 更多