【问题标题】:How to run Spring batch app using CommandLineJobRunner (spring + hibernate and/or war deployment)如何使用 CommandLineJobRunner 运行 Spring 批处理应用程序(spring + hibernate 和/或 war 部署)
【发布时间】:2018-04-09 02:37:27
【问题描述】:

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

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

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

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

我对整个应用程序几乎没有疑问/疑问。他们更倾向于环境/部署。

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

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

谢谢

【问题讨论】:

    标签: spring hibernate spring-batch war batch-processing


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

      公共类 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

    【讨论】:

    • 感谢您提供的信息。我将尝试 maven 汇编插件。我已经创建了工作并使用了与您指定的相同的代码结构。我今天将尝试执行作业。
    猜你喜欢
    • 2019-09-30
    • 2019-10-02
    • 2011-04-22
    • 2016-11-21
    • 2021-08-17
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    相关资源
    最近更新 更多