gpt4 book ai didi

spring - 如何初始化自定义 ItemReader?

转载 作者:行者123 更新时间:2023-12-04 16:49:03 24 4
gpt4 key购买 nike

我已经创建了我的自定义 ItemReader:

@Component("pricereader")
public class MyItemReader implements ItemReader<Price>{

@Override
public Price read() throws Exception, UnexpectedInputException, ParseException,
NonTransientResourceException {
// TODO Auto-generated method stub
return null;
}

在这样定义的作业中调用它:

<batch:job id="job1">
<batch:step id="step1">
<batch:tasklet>
<batch:chunk reader="pricereader" processor="priceprocessor" writer="pricewriter" commit-interval="1"/>
</batch:tasklet>
</batch:step>
</batch:job>

这个 itemReader 必须解析来自外部文件的数据。我可以考虑这样的事情:

private Scanner scanner;
public MyItemReader(String filepath){
//initializing scanner
}

无论如何,我发现构造函数在 spring 初始化时被调用,我不喜欢在内存中保持与文件的打开连接的想法。此外,我想使用此 ItemReader 从多个文件中读取数据,因此在构造函数中添加此信息也不是很好......有什么想法吗?

最佳答案

您所描述的正是 ItemStream 接口(interface)的用途。 ItemStream 接口(interface)。 ItemStream 接口(interface)为 Spring Batch 组件的状态管理提供了便利。它包括一个 openupdateclose 方法,专门用于初始化状态、持久化所需的任何状态以及清除任何状态.在您的情况下,打开文件将在 open 方法中完成,而 close 方法将处理关闭句柄。这些方法通过 Spring Batch 框架自动调用,并在阅读器中用于相同的事情,例如 FlatFileItemReader

事实上,由于 ItemStream 接口(interface)与 ItemReader 接口(interface)的结合使用如此普遍,我们有一个聚合接口(interface) ItemStreamReader延伸两者。您可以在此处的文档中阅读有关 ItemStream 接口(interface)的更多信息:http://docs.spring.io/spring-batch/trunk/reference/html/readersAndWriters.html#itemStream

关于spring - 如何初始化自定义 ItemReader?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29895345/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com