Интерфейс стратегии LineAggregator позволяет вам определить, как объединить элемент в строку для записи в выходной файл. Вы можете реализовать свою собственную логику там. Вот быстрый пример:
static class Person {
private int id;
private String name;
private Gender gender;
enum Gender {
M, F;
}
}
class PersonLineAggregator implements LineAggregator<Person> {
@Override
public String aggregate(Person person) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(person.id).append(",");
stringBuilder.append(person.name).append(",");
stringBuilder.append(person.gender.equals(Person.Gender.M) ? 1 : 0);
return stringBuilder.toString();
}
}
Как только вы определили свой агрегатор строк, вы можете использовать его в FlatFileItemWriter
:
@Bean
public FlatFileItemWriter<Person> personFlatFileItemWriter() {
return new FlatFileItemWriterBuilder<Person>()
.name("personWriter")
.resource(new FileSystemResource("persons.csv"))
.lineAggregator(new PersonLineAggregator())
.headerCallback(writer -> writer.write("id,name,code"))
.build();
}
Надеюсь, это поможет.