Java 将数据从处理器传输到写入程序

Java 将数据从处理器传输到写入程序,java,spring,spring-batch,Java,Spring,Spring Batch,我有一个复合项目处理器,如下所述。我处理由输入对象表示的所有处理器中的项,输入对象表示数据文件中的一行。然而,在processor 4中,我对每个项目进行一些计算,并将其存储在一个映射中,然后将其聚合为整个文件。我想把这张地图预先列在我的书写器里。我怎样才能把这张大地图传给作者 <bean id="myProcessors" class="org.springframework.batch.item.support.CompositeItemProcessor"

我有一个复合项目处理器,如下所述。我处理由输入对象表示的所有处理器中的项,输入对象表示数据文件中的一行。然而,在processor 4中,我对每个项目进行一些计算,并将其存储在一个映射中,然后将其聚合为整个文件。我想把这张地图预先列在我的书写器里。我怎样才能把这张大地图传给作者

<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);
   ...
}