Date d'injection de printemps dans la propriété du bean - CustomDateEditor
Exemple de Spring pour vous montrer comment injecter une «Date» dans la propriété du bean.
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 + "]"; } }
Fichier de configuration du bean
Exécuter
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); } }
Vous rencontrerez les messages d'erreur suivants:
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
Solution
Au printemps, vous pouvez injecter une date via deux méthodes:
1. Haricot d'usine
Déclarez un bean dateFormat, dans le bean «customer», référencez le bean «dateFormat» en tant que bean usine. La méthode de fabrique appelleraSimpleDateFormat.parse()
pour convertir automatiquement String en objet Date.
2. CustomDateEditor
Déclare une classe CustomDateEditor pour convertir String enjava.util.Date.
Et déclare un autre «CustomEditorConfigurer», pour que Spring convertisse les propriétés de bean dont le type estjava.util.Date.
Exemple complet de fichier de configuration de bean.
Télécharger le code source
Téléchargez-le -Spring-CustomDateEditor-Example.zip (5 Ko)