【发布时间】:2019-08-13 10:28:27
【问题描述】:
目前,我为五个不同的类实现了此方法,为五个不同的文本文件配置 FlatFileReader 并加载到 DB 表中。
我想知道有没有办法在一个通用的地方实现这个方法,这样我的每个文件都会调用这个方法来配置我的阅读器读取它们对应的文件..
每个文件都会发送不同的实体类来加载他们的文件。比如主实体、ChildEntity1、ChildEntity2、ChildEntity3、ChildEntity4。
private void flatFileItemReaderConfig(FlatFileItemReader<PrimaryEntity> flatFileReader,
String fileName, String incomingHeader)
{
// set delimiter as '|'
DefaultLineMapper<PrimaryEntity> defaultLineMapper = new DefaultLineMapper<>();
DelimitedLineTokenizer delimitedLineTokenizer = new DelimitedLineTokenizer("|");
delimitedLineTokenizer.setNames(convertHeaderToEntityAttrib(fileName, incomingHeader));
defaultLineMapper.setLineTokenizer(delimitedLineTokenizer);
// convert each record into primaryentity
BeanWrapperFieldSetMapper<PrimaryEntity> beanWrapperFieldSetMapper = new BeanWrapperFieldSetMapper<>();
beanWrapperFieldSetMapper.setTargetType(PrimaryEntity.class);
beanWrapperFieldSetMapper.setCustomEditors(getCustomFormatters());
defaultLineMapper.setFieldSetMapper(beanWrapperFieldSetMapper);
flatFileReader.setLineMapper(defaultLineMapper);
}
【问题讨论】:
-
哪些类有共享功能?这个方法是重复的吗?
-
@cameron1024 是的,仅此方法...FlatFileItemReader> 正如我在问题中提到的那样,它将具有不同的实体类..
-
这似乎已经是通用的了。如果将
FlatFileItemReader<PrimaryEntity>替换为FlatFileItemReader<ChildEntity1>,会出现错误吗?如果是这样,这些错误是什么。
标签: java java-8 spring-batch flatfilereader