如何使用 CommandLineJobRunner 运行 Spring 批处理应用程序(spring + hibernate and/or war 部署)

How to run Spring batch app using CommandLineJobRunner (spring + hibernate and/or war deployment)

我需要使用 Spring Batch 创建批处理作业。

作业将访问 oracle DB,然后获取记录,在 tasklet 中处理它们并提交结果。

我打算使用带 spring 的休眠来处理数据。 作业将通过 AutoSys 执行。我使用 CommandLineJobRunner 作为入口点。

(额外信息 - 我正在使用转换为 Gradle、STS、Spring 4.0、Hibernate 5.0、NO Spring 引导的 DynamicWebProject)

我对整个应用程序的了解很少queries/doubts。他们更wards environment/deployment.

  1. 我是否需要将整个应用程序部署为 Tomcat(或任何服务器)中的 war 以实例化所有 bean(spring 和休眠)?
  2. 如果是,我如何使用 CommandLineJobRunner 启动作业?
  3. 如果不是,我将不得不使用 ClassPathXmlApplicationContext 在 main 方法中手动实例化 bean。在这种情况下,我应该如何执行作业?我需要创建 jar(这是强制性的)吗?
  4. 如何在命令行上测试这些作业?使用 CommandLineJobRunner 执行作业时是否需要传递 jars(spring、hibernate 等依赖项)?

我是批处理作业的新手,您的所有评论都会有很大帮助。

谢谢

  • spring 批处理应用程序不需要服务器。
  • 您可以使用 jobLauncher bean 启动作业。下面是示例代码。

    public class MyJobLauncher {

    public static void main(String[] args) {
        GenericApplicationContext context = new AnnotationConfigApplicationContext(MyBatchConfiguration.class);
        JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher");
        Job job = (Job) context.getBean("myJobName");//this is bean name of your job 
        JobExecution execution = jobLauncher.run(job, jobParameters);
    }
    

    }

您需要创建 jar。还需要所有其他需要的罐子。您可以为此使用 maven maven assembly plugin