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)