Java 将数据从处理器传输到写入程序
我有一个复合项目处理器,如下所述。我处理由输入对象表示的所有处理器中的项,输入对象表示数据文件中的一行。然而,在processor 4中,我对每个项目进行一些计算,并将其存储在一个映射中,然后将其聚合为整个文件。我想把这张地图预先列在我的书写器里。我怎样才能把这张大地图传给作者Java 将数据从处理器传输到写入程序,java,spring,spring-batch,Java,Spring,Spring Batch,我有一个复合项目处理器,如下所述。我处理由输入对象表示的所有处理器中的项,输入对象表示数据文件中的一行。然而,在processor 4中,我对每个项目进行一些计算,并将其存储在一个映射中,然后将其聚合为整个文件。我想把这张地图预先列在我的书写器里。我怎样才能把这张大地图传给作者 <bean id="myProcessors" class="org.springframework.batch.item.support.CompositeItemProcessor"
<bean id="myProcessors"
class="org.springframework.batch.item.support.CompositeItemProcessor"
scope="step">
<property name="delegates">
<util:list>
<ref bean="processor1" />
<ref bean="processor2" />
<ref bean="processor3" />
<ref bean="processor4" />
</util:list>
</property>
</bean>
请帮忙
谢谢。这不是正确的方法,但您可以将其存储到上下文中,例如JobExecutionContext,然后再检索它。查看第11.8节中的示例 这不是一个好的解决方案,因为根据springbatch设计,ItemWriter应该写入作为ItemProcessor输出接收的数据。所以,不要绕过它
我的建议是创建一个POJO类,其中包含key和value字段及其getter/setter。这样,处理器4就可以将地图转换为列表。因此,编写器可以接收列表,您的意思是创建一个保存我的映射的POJO,并将其注入处理器并写入,以便两者都可以使用它。你能发布一个配置让我能理解吗。谢谢。@user322372补充了原始答案。鲍勃,我还有一个问题。。。
public class OutputObject {
private Map myMap;
public Object getMyMap() {
return myMap;
}
public void setMyMap(Map myMap) {
this.myMap= myMap;
}
}
public OutputObject process(InputObject item) throws Exception {
...
Map myMap = ....
OutputObject out = new OutputObject();
out.setMyMap(myMap);
return out;
}
public void write(List<? extends OutputObject> items) throws Exception {
...
Map myMap = items.get(0);
...
}