如何初始化自定义 ItemReader?
How to initialize custom ItemReader?
我已经创建了自定义 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
接口的用途。 ItemStream
界面。 ItemStream
接口为 Spring Batch 组件的状态管理提供了便利。它包括一个 open
、update
和 close
方法,专门用于初始化状态、持久化所需的任何状态以及清除任何状态。在您的情况下,打开文件将在 open
方法中完成,而 close
方法将处理关闭句柄。这些方法通过 Spring 批处理框架自动调用,并在像 FlatFileItemReader
这样的阅读器中用于相同的事情。
事实上,由于 ItemStream
接口与 ItemReader
接口的结合使用如此普遍,我们有一个聚合接口 ItemStreamReader
来扩展两者。您可以在此处的文档中阅读有关 ItemStream
界面的更多信息:http://docs.spring.io/spring-batch/trunk/reference/html/readersAndWriters.html#itemStream
我已经创建了自定义 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
接口的用途。 ItemStream
界面。 ItemStream
接口为 Spring Batch 组件的状态管理提供了便利。它包括一个 open
、update
和 close
方法,专门用于初始化状态、持久化所需的任何状态以及清除任何状态。在您的情况下,打开文件将在 open
方法中完成,而 close
方法将处理关闭句柄。这些方法通过 Spring 批处理框架自动调用,并在像 FlatFileItemReader
这样的阅读器中用于相同的事情。
事实上,由于 ItemStream
接口与 ItemReader
接口的结合使用如此普遍,我们有一个聚合接口 ItemStreamReader
来扩展两者。您可以在此处的文档中阅读有关 ItemStream
界面的更多信息:http://docs.spring.io/spring-batch/trunk/reference/html/readersAndWriters.html#itemStream