#spring-batch #export-to-csv
#spring-batch #экспорт в csv
Вопрос:
я хочу записать в CSV-файл в spring batch writer, но я не хочу использовать имена свойств в моем компоненте, мне нужно пользовательское имя поля. есть ли другой способ сделать это без использования BeanWrapperFieldExtractor?
Вот мой компонент:
public class VMi {
private String Name;
private String OrgName;
private String Status;
private int CPU;
private int RAM;
private String IP;
}
я хочу вывести поля с одинаковыми именами, за исключением «OrgName», которое я хочу использовать как «Организация-> Название»
Комментарии:
1. Вы имеете в виду, что вам нужны разные имена в заголовке выходного файла? Поскольку
BeanWrapperFieldExtractor
извлекает значения из полей на основе геттеров, и вы все равно можете использовать его в сочетании с aFlatFileHeaderCallback
, где вы пишете имена пользовательских полей в заголовке.
Ответ №1:
Если вы хотите записать разные имена в заголовке выходного файла, вы можете использовать FlatFileHeaderCallback
. Вот краткий пример:
@Bean
public FlatFileItemWriter<VMi> itemWriter() {
return new FlatFileItemWriterBuilder<VMi>()
.resource(new FileSystemResource("vmi.csv"))
.name("vmiWriter")
.delimited()
.names("Name", "OrgName", "Status", "CPU", "RAM", "IP")
.headerCallback(writer -> writer.write("Name, Organization->Name, Status, CPU, RAM, IP"))
.build();
}
При этом по-прежнему будет использоваться BeanWrapperFieldExtractor
для извлечения значений из элементов на основе методов получения, но OrgName
в выходной файл будет записано другое имя.