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

时间:2017-10-27 13:11:44

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

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

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

我打算使用带弹簧的hibernate来处理数据。 工作将通过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执行作业时,是否需要传递jar(spring,hibernate等依赖项)?
  5. 我是批处理工作的新手,所有的评论都会有很大的帮助。

    由于

1 个答案:

答案 0 :(得分:1)

  • 春季批量申请不需要服务器。
  • 您可以使用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