So konvertieren Sie Date in BeanWrapperFieldSetMapper
Lesen Sie den folgenden Spring-Batch-Job, lesen Sie Daten aus „domain.csv“ und ordnen Sie sie einem Domänenobjekt zu.
job-example.xml
domain.csv
1,facebook.com,Mon Jul 15 16:32:21 MYT 2013 2,google.com,Mon Jul 15 16:32:21 MYT 2013 3,youtube.com,Mon Jul 15 16:32:21 MYT 2013 4,yahoo.com,Mon Jul 15 16:32:21 MYT 2013 5,amazon.com,Mon Jul 15 16:32:21 MYT 2013
Domain.java
import java.util.Date; public class DomainRanking { private int id; private String domainName; private Date lastModifiedDate; //... }
Problem
Das Problem ist, wie das String-DatumMon Jul 15 16:32:21 MYT 2013
injava.util.Date
abgebildet / konvertiert wird. Beim Ausführen des Jobs über dem Job werden die folgenden Fehlermeldungen angezeigt:
Cannot convert value of type [java.lang.String] to required type [java.util.Date] for property 'lastModifiedDate': no matching editors or conversion strategy found
Lösung
Um die Art und Weise anzupassen, in der FieldSet-Werte in den gewünschten Typ für das Einfügen in den Prototyp konvertiert werden, gibt es mehrere Möglichkeiten. Sie können PropertyEditor-Instanzen direkt über die customEditors-Eigenschaft einfügen.
Um dies zu beheben, deklariert aCustomDateEditor
und injiziert übercustomEditors
Eigenschaft inBeanWrapperFieldSetMapper
.
job-example.xml
P.S The String Date “Mon Jul 15 16:32:21 MYT 2013” is represented by “EEE MMM dd HH:mm:ss z yyyy”.
Note
InjiziertCustomDateEditor
nicht überCustomEditorConfigurer
(global), es funktioniert nicht.