如何使用Spring批处理处理对象列表

时间:2020-04-01 11:22:21

标签: spring spring-boot maven model-view-controller spring-batch

我正在尝试读取JSON文件并读取其值,并将其存储在List<Data>对象中。 我正在从ItemReader类中调用列表,然后对其进行处理以将其写入数据库。

我的读者如下所示:

public class JsonItemReaderFromULProspector implements ItemReader<Data>{
//  static String jsonFilePath = Directory.JSON_FILE_PATH;

    private int nextULPIndex;

    public JsonItemReaderFromULProspector() {
         initialize();
}

    private List<Data> finalULPData;
    private void initialize() {
        List<Data> ulpData=ReadJSONFromULP.getJsonObject();
        for(Data data:ulpData){
            finalULPData=Collections.unmodifiableList(Arrays.asList(data));
            nextULPIndex=0;
        }
    }

    @Override
    public Data read()throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException {

        Data nextULPData=null;
         if (nextULPIndex < finalULPData.size()) {
             nextULPData = finalULPData.get(nextULPIndex);

             nextULPIndex++;
            }

            return nextULPData;
        }

    }

而我的处理器是普通处理器,它以<Data,ULProspector>作为输入和输出。

当我尝试将其写入数据库时​​。我只有一条记录可以将其写入数据库,并且此后将退出。

1 个答案:

答案 0 :(得分:0)

而且我相信,只有您能够将其写入数据库的一条记录才是JSON文件中的最后一条记录。

尝试更改部分代码

for(Data data:ulpData){
            finalULPData=Collections.unmodifiableList(Arrays.asList(data));
            nextULPIndex=0;
        }

TO

finalULPData=Collections.unmodifiableList(ulpData);
nextULPIndex=0;