您可以为
LineMapper
和
Reader
将为每个步骤执行的步骤级别范围的。
线条映射程序bean
@Bean("lineMapper")
@StepScope
public LineMapper<YourCustomRecordVo> lineMapper() {
DefaultLineMapper<YourCustomRecordVo> lineMapper = new DefaultLineMapper<YourCustomRecordVo>();
DelimitedLineTokenizer lineTokenizer = new DelimitedLineTokenizer("yourDelimiter");
lineMapper.setLineTokenizer(lineTokenizer);
//set fieldset mappers etc
return lineMapper;
}
读者豆
@Bean(name = "reader")
@StepScope
public YourCustomReader reader(){
YourCustomReader reader = new YourCustomReader();
reader.setLineMapper(lineMapper());
//set others necessary properties
return reader;
}
这里都
reader
和;
lineMapper
将为每个步骤(即为每个文件处理)创建bean。因此,可以根据不同的条件设置不同的分隔符。
更新的
为了使用自定义分隔符,可以将其设置为作业属性,如
JobParametersBuilder paramsBuilder = new JobParametersBuilder();
paramsBuilder.addString("delimiter", "yourCustomDelimiter");
午餐工作就像
jobLauncher.run(job, paramsBuilder.toJobParameters());
最后检索作业参数(当前情况下为分隔符)为
@Bean("lineMapper")
@StepScope
public LineMapper<YourCustomRecordVo> lineMapper(@Value("#{jobParameters['delimiter']}") String delimiter) {...}