org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'user' defined in class path resource [applicationContext.xml]: Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.lang.String] to required type [java.util.Date] for property 'inDate'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [java.lang.String] to required type [java.util.Date] for property 'inDate': no matching editors or conversion strategy found
Caused by: org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.lang.String] to required type [java.util.Date] for property 'inDate'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [java.lang.String] to required type [java.util.Date] for property 'inDate': no matching editors or conversion strategy found
Caused by: java.lang.IllegalArgumentException: Cannot convert value of type [java.lang.String] to required type [java.util.Date] for property 'inDate': no matching editors or conversion strategy found
at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:231)
at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:138)
at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:380)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1112)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:862)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:424)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:156)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:287)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:91)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:75)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:65)
at main.Test.main(Test.java:12)
----------------------------------------------------------
代码:
package domain;
import java.util.Date;
import java.util.List;
public class User {
private String userName;
private int userAge;
private List userHobby;
private Date inDate;
public Date getInDate() {
return inDate;
}
public void setInDate(Date inDate) {
this.inDate = inDate;
}
public int getUserAge() {
return userAge;
}
public void setUserAge(int userAge) {
this.userAge = userAge;
}
public List getUserHobby() {
return userHobby;
}
public void setUserHobby(List userHobby) {
this.userHobby = userHobby;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public void say()
{
System.out.println("myName is "+this.getUserName());
for(int i=0;i<this.getUserHobby().size();i++)
{
System.out.println("my hobby is "+this.getUserHobby().get(i).toString());
}
System.out.println("my income date is "+this.getInDate());
}
}
spring配置文件:
<property name="inDate">
<value>1984-04-11</value>
</property>
这样是不行的 看了也知道 这个1984-04-11是字符串 怎么能赋给date呢 那怎么解决呢 那我们就要写个属性编辑器(转换器?)
----------------------------------------------------------------------解决步骤-------------------------------------------------
1 写一个dateEditor 来继承 java.beans.PropertyEditorSupport;
package util;
import java.beans.PropertyEditorSupport;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateEditor extends PropertyEditorSupport {
@Override
public void setAsText(String dateStr) throws IllegalArgumentException {
Date d =this.parseToDate(dateStr);
this.setValue(d);
}
private Date parseToDate(String date)
{
String format = "yyyy-MM-dd";
DateFormat df =new SimpleDateFormat(format);
Date d = null;
try {
d = df.parse(date);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return d;
}
}
写好之后 我们可以专门写一个配置文件放这个
applicationContext-editor.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="dateEditor" class="org.springframework.beans.factory.config.CustomEditorConfigurer"><!--注册我们的类-->
<property name="customEditors">
<map>
<entry key="java.util.Date">
<bean class="util.DateEditor"></bean>
</entry>
</map>
</property>
</bean>
</beans>
------------------------------------------------------ok 大功告成 测试----------------------------------
BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext-*.xml");
User user = (User)factory.getBean("user");
user.say();
--------------------------------------输出结果-------------------------------
my income date is Wed Apr 11 00:00:00 CST 1984 只是这里为没按照 yyyy-MM-dd来输出 奇怪哦
分享到:
相关推荐
1.spring 普通属性注入 2.xml中 map集合标签与其他标签不通-- 3.用junit测试
Spring注解注入属性
Spring属性注入:关于Spring的属性注入一共有两种方式,分别为XML方式与注解方式,其中XML方式又分为Set注入与构造方法注入,注解方式分为java注解与Spring注解
spring各种属性的注入 spring各种属性的注入 spring各种属性的注入
主要为大家详细介绍了Spring boot工具类静态属性注入,及多环境配置详解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
知识共享-spring属性注入(雷惊风).
Spring Boot系列四 Spring @Value 属性注入使用总结一
在spring中,当属性是由工厂方法创造的,而不是用new关键字实例化的,就需要在applicationContext.xml配置工厂方法,是spring容器为我们自动注入属性
Spring Cloud Gateway中的全局异常处理不能直接用@ControllerAdvice来处理,通过跟踪异常信息的抛出,找到对应的源码,自定义一些处理逻辑来符合业务的需求。 网关都是给接口做代理转发的,后端对应的都是REST API,...
Spring依赖注入使用构造设注入demo。完整可运行。
spring注入方式 set注入 构造注入 自动注入
javaEE 开发中 现在最成熟的框架之一应该就是spring了 spring框架最强大的地方就是实现了依赖注入 也叫控制反转 最近的一个项目中用的就是 spring框架 spring框架是工厂模式的应用结合了MVC的设计思想 大家可以...
NULL 博文链接:https://coolszy.iteye.com/blog/519123
凡带有@Component,@Controller,@Service,@Repository 标志的等于告诉Spring这类将自动产生对象,而@Resource则等于XML配置中的ref,告诉spring此处需要注入对象,所以用@Resource就有了ref的功效。 要用注解注入方式...
今天小编就为大家分享一篇关于spring循环注入异常问题的解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
spring依赖注入底层详解,很不错的资源,欢迎大家来下载学习。
NULL 博文链接:https://364232252.iteye.com/blog/2369889
Spring依赖注入检查,适合初学者进一步了解Spring框架。
本篇文章主要介绍了Spring boot将配置属性注入到bean类中,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Spring依赖注入使用实例工厂设注入demo。完整可运行。