So konvertieren Sie das Datum in BeanWrapperFieldSetMapper

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.