пользовательские имена полей CSV в spring batch writer

#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 извлекает значения из полей на основе геттеров, и вы все равно можете использовать его в сочетании с a FlatFileHeaderCallback , где вы пишете имена пользовательских полей в заголовке.

Ответ №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 в выходной файл будет записано другое имя.