![](/img/trans.png)
[英]Spring Batch Custom ItemReader IllegalArgumentException
[英]Spring Batch : custom ItemReader
我有一个带有简单自定义阅读器和编写器的Spring Batch项目。 当我运行代码时,我将无休止地循环打印第一项“项目1”。 我究竟做错了什么?
这是我的代码:
Reader.java
public class Reader implements ItemReader<SimpleItem> {
public SimpleItem read() throws Exception, UnexpectedInputException, ParseException {
if (getIterator().hasNext()) {
return getIterator().next();
}
return null;
}
public Iterator<SimpleItem> getIterator() {
List<SimpleItem> list = new ArrayList();
list.add(new SimpleItem("item 1"));
list.add(new SimpleItem("item 2"));
return list.iterator();
}
}
Writer.java
public class Writer implements ItemWriter<SimpleItem> {
@Override
public void write(List<? extends SimpleItem> list) throws Exception {
for(SimpleItem item : list) {
System.out.println(item.getName()); // this prints item 1 endelessly
}
}
}
每次对ItemReader#read
的调用都始于对Reader#getIterator
的调用,这意味着每次调用read都会获得一个新列表。 您确实只想创建一次列表。
我们已经有一个基于List
的ItemReader
实现。 您可以在以下Github上查看其代码: https : //github.com/spring-projects/spring-batch/blob/master/spring-batch-infrastructure/src/main/java/org/springframework/批/项目/支持/ ListItemReader.java
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.