当前位置: 首页 > 知识库问答 >
问题:

从命令行运行Spring批处理作业

夏嘉德
2023-03-14

我不知道如何使用commandlinejobrunner调用Spring批处理中定义的作业,文档细节对我来说是不够的。

我遵循了Spring Batch官方指南,使用Java注释(例如@enableBatchProcessing)在Spring Batch中编写作业,因为我希望避免使用XML配置文件来描述作业、步骤等。

到目前为止我已经:

  • 配置类(com.package.bla.bla.ClassContainingTheBatchConfiguration见下文),我使用@beanAnnotaIon将定义ItemReaderItemProcessorItemWriter作业步骤(带有返回jobs.get(“nameoftheJob”)的所有内容放入其中。
  • 具有main方法的类,该方法具有springapplication.run(...)并具有@importresource(“classpath:meta-inf/spring/applicationcontext.xml”)注释,以导入处理作业中的数据时需要的一些bean。

在Maven方面,我目前正在使用一些插件:

  • maven-jar-plugin指定 true 和包含标记
  • 中的main方法的类
  • maven-assembly-plugin因为我想要一个唯一的可执行jar包含依赖项中的所有东西,所以我使用 package 来构建package阶段中的jar,我还使用 single 来使用assembly
  • 正确地构建jar
  • maven-compiler-plugin指定我正在使用Java 1.7

我想我已经配置了所有需要配置的东西,但是在使用Mavenbuild success之后,我无法从命令行运行作业:

java -cp ./target/JAR_FILE_NAME.jar org.springframework.batch.core.launch.support.CommandLineJobRunner com.package.bla.bla.ClassContainingTheBatchConfiguration nameOfTheJob

由于关于com.package.bla.bla.ClassContainingTheBatchConfigurationjava.io.FileNotFoundException引发IOException。我应该如何在命令行中指定参数以使作业得到执行?

共有1个答案

田远
2023-03-14

如果您已经在Spring Boot中使用SpringApplication,那么为什么不完成该作业并使用@enableAutoConfiguration以及Maven插件(例如,请参见本指南)呢?这样,您就可以很快地完成一些工作,并且可以在以后添加您自己的功能。

 类似资料:
  • 我能够通过命令行使用成功地启动springboot-batch作业。

  • 我有一个作业流,我希望以以下方式运行它: 作业流将从Job1开始。在Job1成功完成后,Job1将同时启动Job2和Job4。 Job2和Job4将并行运行。 在Job2成功完成后,Job2将启动Job3。 在Job4成功完成后,Job4将启动Job5。 下面是job1.xml和job1的作业启动器类的代码片段: job1.xml uijobLauncher.java “job2,Job3”对和“

  • 我正在使用spring批处理读取CSV文件并使用controller触发器将其写入DB。在启动应用程序时,在我从浏览器url中点击之前,我会在启动时看到来自阅读器的打印语句。虽然它不为我的处理器或写入器打印它,它们是在单独的类中,我已经自动连线。是因为读者是豆子吗?

  • 我在我的项目中集成了Spring Batch,我在运行JobLauncher时遇到了问题。 在我的类JobLauncher我有这个: 对于配置,我使用XML配置: 配置批处理。xml: 在作业配置中。我有: 当我在类JobLauncher中调试时,它会在jobLuancher中停止。运行,我也不例外,似乎SpringBatch无法识别reader和whriter!!有什么建议吗?

  • 问题内容: 运行main方法时,将执行作业。这样我无法弄清楚如何控制作业的执行。例如,您如何安排作业,访问作业执行或设置作业参数的方式。 我试图注册自己的JobLauncher 但是当我尝试在主要方法中使用它时: 当加载上下文时,该作业再次执行,而当我尝试手动运行它时,我得到了。有没有办法防止自动作业执行? 问题答案: 通过设置可以防止作业执行 在application.properties中。或