我想将id的列表作为参数之一传递给Spring批处理。这有可能实现吗?
提前致谢。
答案 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);