比如我们有下面的一个bean:
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中有一个Date,但是如果我们使用下面的配置:
然后我们尝试着运行的话
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); }}
会出现如下的错误:
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 foun 在这里提供两种解决办法:
1. Factory bean
声明一个dateFormat的bean,然后引用。如下解决:
2. CustomDateEditor
我们声明一个CustomDateEditor,将String转换为Date对象。
完整的配置为: