如何使用spring批处理

时间:2016-02-29 13:19:42

标签: spring spring-batch

截至目前,我正在运行单一工作的春季批次。那么现在我想运行多个彼此不同的工作意味着不同的功能。 在我的配置文件中,我配置了两个具有不同ID和不同名称的作业。 现在我必须经营这些工作。你能告诉我我该怎么办? 我怀疑的是 在我的java类中,我编写了这个代码来运行批处理。

 @Autowired
    private JobLauncher jobLauncher;

    @Autowired
    private Job job;


CompositeWriter compositeWriter=new CompositeWriter();
            JobParameters jobParameters = new JobParametersBuilder().addLong("time", System.currentTimeMillis()).toJobParameters();
            Long startTime=System.nanoTime();
            JobExecution execution = jobLauncher.run(job, jobParameters);

对于其他工作,我如何调用jobLauncher的run方法。

我的配置文件是

<bean id="pagingItemReader" class="com.tcs.UserRowMapper">
    </bean>

     <job id="testJob" xmlns="http://www.springframework.org/schema/batch">
        <step id="step1">
            <tasklet>
                <chunk reader="pagingItemReader" processor="testApp" writer="itemWriter" 
                    commit-interval="1" />
            </tasklet>
        </step>
    </job> 
     <job id="testJob2" xmlns="http://www.springframework.org/schema/batch">
        <step id="step2">
            <tasklet>
                <chunk reader="itemReaderForNotification" processor="processforNoticeHeader" writer="itemUpateForNoticeHeader" 
                    commit-interval="1" />
            </tasklet>
        </step>
    </job> 

1 个答案:

答案 0 :(得分:1)

您发布的代码似乎不完整;但你可以通过它的id从配置中获取作业,不是吗?像这样:

ApplicationContext context = new ClassPathXmlApplicationContext(config);
JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher");
Job job1 = (Job) context.getBean("testJob");
Job job2 = (Job) context.getBean("testJob2");


JobExecution execution1 = jobLauncher.run(job1, new JobParameters());
System.out.println("Exit Status : " + execution1.getStatus());
JobExecution execution2 = jobLauncher.run(job2, new JobParameters());
System.out.println("Exit Status : " + execution2.getStatus());