Spring Batch将值列表作为参数传递

时间:2014-01-13 11:07:14

标签: spring spring-batch

我想将id的列表作为参数之一传递给Spring批处理。这有可能实现吗?

提前致谢。

2 个答案:

答案 0 :(得分:11)

你想做的事是不可能的。

来自JobParameter doc:

  

批处理作业的参数的域表示。只有   以下类型可以是参数:String,Long,Date和Double。该   识别标志用于指示参数是否用作   部分工作实例的识别。

你可能很想把你的id列表写成逗号分隔的字符串并将其作为单个参数传递,但要注意当它存储在数据库has a length of at most 250 bytes时。您要么必须增加该限制,要么采用其他方式。

也许您可以解释为什么需要传递ID列表。

答案 1 :(得分:1)

如果您想从ItemReader传递列表,那么您必须首先获得JobParameters(您必须声明您的读者是步骤范围,请参阅this thread) 。

您必须将列表作为参数放入JobParameters。由于JobParameters是不可变的,因此您必须创建一个新对象

List yourList = ....   
JobParameters jp = (JobParameters) fac.getBean("params");
Map map=params.getParameters();
map.put("yourList", list);
params=new JobParameters(map);
launcher.run(job, params);