我想传递一个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");
}
}
答案 0 :(得分:0)
首先,您不应该使用JobParameters
,因为这些用于其他一些用例。
我没有在Spring网站上清楚地写到它,所以引自here
JobParameters:用于启动批处理作业的一组参数。它 对每个JobInstance进行分类。
即。 JobParameters
类旨在区分各种作业实例,这非常关注Spring Batch元数据。
您正在谈论的数据(国家/地区列表)似乎是应用程序逻辑数据(因为您提到在应用程序处理器中使用),我建议通过其他方式使其可用 - 作为应用程序引导的一部分。
传统上,我们使用应用程序属性,硬编码常量(列表,映射等),文件中的值,数据库,命令行参数等来向应用程序逻辑提供数据。您应该使用其中一种方式而不是JobParameters
。
如果选择参数方式,这SO Question可能会有所帮助。