如何将作为jobParameter的String数组值传递到我的JobProcessor中

时间:2017-09-21 17:07:11

标签: spring spring-batch

我想传递一个String值数组,如下所示:String[] countries = {"IN","BR","CO"};我的作业启动器如下所示:

public class App {
public static void main(String[] args) {
    String[] springConfig  = 
        {   "spring/batch/config/database.xml", 
            "spring/batch/config/context.xml",
            "spring/batch/jobs/job-report.xml" 
        };
    ApplicationContext context = 
            new ClassPathXmlApplicationContext(springConfig);
    JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher");
    Job job = (Job) context.getBean("blueReportJob");
    try {
        JobExecution execution = jobLauncher.run(job, new JobParameters());
    } catch (Exception e) {
        e.printStackTrace();
    }
    System.out.println("*** END");
}

}

1 个答案:

答案 0 :(得分:0)

首先,您不应该使用JobParameters,因为这些用于其他一些用例。

我没有在Spring网站上清楚地写到它,所以引自here

  

JobParameters:用于启动批处理作业的一组参数。它   对每个JobInstance进行分类。

即。 JobParameters类旨在区分各种作业实例,这非常关注Spring Batch元数据。

您正在谈论的数据(国家/地区列表)似乎是应用程序逻辑数据(因为您提到在应用程序处理器中使用),我建议通过其他方式使其可用 - 作为应用程序引导的一部分。

传统上,我们使用应用程序属性,硬编码常量(列表,映射等),文件中的值,数据库,命令行参数等来向应用程序逻辑提供数据。您应该使用其中一种方式而不是JobParameters

如果选择参数方式,这SO Question可能会有所帮助。