Форматируемый объект вывода Springte Spring, использующий средства форматирования аннотаций Spring API, не работает - PullRequest
1 голос
/ 21 октября 2019

Попытка отформатировать объект перед записью результата в текстовый файл с использованием Spring Batch, но я не получаю ожидаемого результата. Я хочу использовать формат аннотации API Spring, @NumberFormat для чисел и @DateTimeFormat для даты, потому что у меня есть несколько объектов для форматирования, и я не хочу тратить время на создание служб форматирования

Модель:

public class Type_0 {

@NumberFormat(pattern="###,###.###")
private BigDecimal typeEnregistrement= BigDecimal.valueOf(123456789.123);

@DateTimeFormat(pattern = "dd.MM.yyyy")
private Date dateCreationFichier;

@NumberFormat(pattern="###,###.###")
public BigDecimal  getTypeEnregistrement() {
    return typeEnregistrement;
}
@NumberFormat(pattern="###,###.###")
public void setTypeEnregistrement(BigDecimal  typeEnregistrement) {
    this.typeEnregistrement = typeEnregistrement;
}

@DateTimeFormat(pattern = "dd.MM.yyyy")
public Date getDateCreationFichier() {
    return dateCreationFichier;
}
@DateTimeFormat(pattern = "dd.MM.yyyy")
public void setDateCreationFichier(Date dateCreationFichier) {
    this.dateCreationFichier = dateCreationFichier;
}

@Override
 public String toString() {

return typeEnregistrement+""+typeEmetteur+numEmetteur+"      
"+TypeDest+numDest+dateCreationFichier;    }
}

Автор:

@Bean
public FlatFileItemWriter<Type_0> writer() {

    FlatFileItemWriter<Type_0> writer = new FlatFileItemWriter<Type_0>();
    writer.setResource(new FileSystemResource("c:/upload/b2.txt"));
    DelimitedLineAggregator<Type_0> delLineAgg = new DelimitedLineAggregator<>();
    delLineAgg.setDelimiter(";");
    writer.setLineAggregator(delLineAgg);
    return writer;
}

Процессор:

@Override
public Type_0 process(final Type_0 item) throws Exception {


    DefaultFormattingConversionService conversionService =
            new DefaultFormattingConversionService(false);
    conversionService.addFormatterForFieldAnnotation(
            new NumberFormatAnnotationFormatterFactory());
    Type_0 t0=new Type_0();
    t0=item;
    DataBinder dataBinder = new DataBinder(t0);
    dataBinder.setConversionService(conversionService);

    return t0;
}

Ожидаемый результат: 123,456,789,123 0000125 24.04.2007

но яиметь в выходном файле: 123456789.123 0000125 2007-04-24

...