@Configuration
public class FlatFileReaderConfig{
@Bean
public FlatFileItemReader<Student> flatFileReader() {
FlatFileItemReader<Student> reader = new FlatFileItemReader<>();
reader.setResource(new ClassPathResource("student.txt"));
reader.setLinesToSkip(1);
DelimitedLineTokenizer tokenizer = new DelimitedLineTokenizer();
tokenizer.setNames(new String[]{"id", "name", "age"});
DefaultLineMapper<Student> mapper = new DefaultLineMapper<>();
mapper.setLineTokenizer(tokenizer);
mapper.setFieldSetMapper(new FieldSetMapper<Student>() {
@Override
public Student mapFieldSet(FieldSet fieldSet) throws BindException {
Student stu = new Student();
stu.setId(fieldSet.readInt("id"));
stu.setName(fieldSet.readString("name"));
stu.setAge(fieldSet.readInt("age"));
return stu;
}
});
mapper.afterPropertiesSet();
reader.setLineMapper(mapper);
return reader;
}
}
@Slf4j
@Configuration
public class FlatFileWriter2TextConfig {
@Bean
@SneakyThrows
public FlatFileItemWriter<? super Student> flatFileWriterText() {
FlatFileItemWriter<Student> writer = new FlatFileItemWriter<>();
writer.setAppendAllowed(true);
writer.setEncoding("UTF-8");
String path = "C:\\Users\\miles\\Desktop\\SpringBatch_demo\\src\\main\\resources\\itemWriterJson.txt";
writer.setResource(new FileSystemResource(path));
writer.setLineAggregator(new DelimitedLineAggregator<Student>() {{
setDelimiter(",");
setFieldExtractor(new BeanWrapperFieldExtractor<Student>() {
{
setNames(new String[]{"id", "name", "age"});
}
});
}});
writer.afterPropertiesSet();
return writer;
}
@Bean
public FlatFileItemWriter<? super Student> flatFileWriterJson() throws Exception {
FlatFileItemWriter<Student> writer = new FlatFileItemWriter<>();
String path = "C:\\Users\\miles\\Desktop\\SpringBatch_demo\\src\\main\\resources\\itemWriterJson.txt";
writer.setResource(new FileSystemResource(path));
writer.setAppendAllowed(true);
writer.setLineAggregator(new LineAggregator<Student>() {
final ObjectMapper mapper = new ObjectMapper();
@SneakyThrows
@Override
public String aggregate(Student item) {
String str;
str = mapper.writeValueAsString(item);
return str;
}
});
writer.afterPropertiesSet();
return writer;
}
@Bean
public ItemWriter<? super Student> consoleWriter() {
ItemWriter<Student> writer = items -> {
for (Student student : items) {
log.info(student.toString());
}
};
return writer;
}
}