我不知道如何使用 CommandLineJobRunner 调用 Spring Batch 中定义的作业,文档细节对我来说还不够。

我关注了 Spring Batch official guide使用 Java 注释在 Spring Batch 中编写作业,例如@EnableBatchProcessing因为我想避免使用 XML 配置文件来描述工作、步骤等。

到目前为止,我有:

  • 一个配置类( com.package.bla.bla.ClassContainingTheBatchConfiguration 见下文),我已经把所有定义 ItemReader 的东西都放在这里了, ItemProcessor , ItemWriter , Job , 和 Step (与 return jobs.get("nameOfTheJob") 见下文)使用 @Bean注释。
  • 一个带有 main 的类方法与 SpringApplication.run(...)和和注释 @ImportResource("classpath:META-INF/spring/applicationContext.xml")在处理作业中的数据时导入一些我需要的 bean。

  • 在 Maven 方面,我目前正在使用一些插件:
  • maven-jar-plugin指定 <addClasspath>true</addClasspath>以及标签中包含 main 方法的类 <mainClass>
  • maven-assembly-plugin因为我想要一个独特的可执行文件 jar包含依赖项中的所有内容,我正在使用 <phase>package</package>能够在 package 中构建 jar 阶段,我也在用<goal>single</goal>能够使用 assembly 正确构建 jar
  • maven-compiler-plugin指定我使用的是 Java 1.7

  • 我想我已经配置了所有需要配置的东西,但是在拥有 Maven 之后 BUILD SUCCESS我无法从命令行运行作业:
    java -cp ./target/JAR_FILE_NAME.jar org.springframework.batch.core.launch.support.CommandLineJobRunner com.package.bla.bla.ClassContainingTheBatchConfiguration nameOfTheJob 
    

    正在抛 IOException由于 java.io.FileNotFoundException关于 com.package.bla.bla.ClassContainingTheBatchConfiguration .我应该如何在命令行中指定参数才能执行作业?

    请您参考如下方法:

    如果您已经在使用 SpringApplication从 Spring Boot 开始,为什么不完成工作并使用 @EnableAutoConfiguration以及 Maven 插件(参见例如 this guide )?这样你就可以很快地得到一些东西,而且你以后可以随时添加自己的功能。


    评论关闭
    IT干货网

    微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!