Spring injiziert Date in die Bean-Eigenschaft - CustomDateEditor
Das folgende Beispiel zeigt Ihnen, wie Sie ein "Date" in die Bean-Eigenschaft einfügen.
package com.example.common;
import java.util.Date;
public class Customer {
Date date;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
@Override
public String toString() {
return "Customer [date=" + date + "]";
}
}
Bean Konfigurationsdatei
Starte es
package com.example.common;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext(
"SpringBeans.xml");
Customer cust = (Customer) context.getBean("customer");
System.out.println(cust);
}
}
Sie werden folgende Fehlermeldungen erhalten:
Caused by: org.springframework.beans.TypeMismatchException:
Failed to convert property value of type [java.lang.String] to
required type [java.util.Date] for property 'date';
nested exception is java.lang.IllegalArgumentException:
Cannot convert value of type [java.lang.String] to
required type [java.util.Date] for property 'date':
no matching editors or conversion strategy found
Lösung
Im Frühjahr können Sie ein Date auf zwei Arten injizieren:
1. Werksbohne
Deklarieren Sie eine dateFormat-Bean. Verweisen Sie in der Bean "customer" auf die Bean "dateFormat" als Factory-Bean. Die Factory-Methode ruftSimpleDateFormat.parse() auf, um String automatisch in ein Date-Objekt zu konvertieren.
2. CustomDateEditor
Deklariert eine CustomDateEditor-Klasse, um String injava.util.Date zu konvertieren.
Und deklariert einen weiteren "CustomEditorConfigurer", damit Spring Bean-Eigenschaften konvertiert, deren Typjava.util.Date ist.
Vollständiges Beispiel einer Bean-Konfigurationsdatei.
Quellcode herunterladen
Laden Sie es herunter -Spring-CustomDateEditor-Example.zip (5 KB)