`

spring bean 日期格式注入的几种模式

阅读更多

1 当我们进行bean注入到spring当中的时候,这个bean当中可能会存在着一些特殊类型的数据元素,如Date类型,当我们不进行一些特殊处理的时候,想直接给其赋值就会报告错误。

我们定义了如下类

package com.japie.customproperty;

import java.util.Date;
/**
 * 自定义属性配置
 * @author Japie
 * 下午06:15:04
 */
public class BoyMan {
	private Date birthDay;
	private String username;

	public BoyMan() {
	}

	public Date getBirthDay() {
		return birthDay;
	}

	public void setBirthDay(Date birthDay) {
		this.birthDay = birthDay;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}
	@Override
	public String toString()
	{
		return "BoyMan:["+username+this.birthDay+"]";
	}
	public static void main(String[] args) {
	}

}

 配置文件为

<bean id="boyMan" class="com.japie.customproperty.BoyMan">
		<property name="birthDay" value="2011-06-17">
		<property name="username" value="japie"/>
</bean>

 当进行测试的时候报告如下的错误。

Caused by: org.springframework.beans.TypeMismatchException: 
	Failed to convert property value of type [java.lang.String] to 
	required type [java.util.Date] for property 'birthDay';

 2 那么如何解决上面的问题呢,有如下几种方法供参考

Declare a dateFormat bean, in “customer” bean, reference “dateFormat” bean as a factory bean. The factory method will call SimpleDateFormat.parse() to convert String into Date object automatically.

 

    1) 定义一个dateFormat bean,而后通而后通过工程模式在boyman这个类当中用构造器的模式进行引用,其实就是调用SimpleDateFormat.parse() 的方法,配置文件如下

<bean id="boyMan" class="com.japie.customproperty.BoyMan">
		<property name="birthDay">
		 <bean factory-bean="dateFormat" factory-method="parse">
		 	<constructor-arg value="2011-06-17" />
		 </bean>
		</property>
		<property name="username" value="japie"/>
</bean>

 如此就可以进行正常的赋值了。

2)自定义日期熟悉编辑器

 

<bean id="dateEditor"
		class="org.springframework.beans.propertyeditors.CustomDateEditor">
 
		<constructor-arg>
			<bean class="java.text.SimpleDateFormat">
				<constructor-arg value="yyyy-MM-dd" />
			</bean>
		</constructor-arg>
		<constructor-arg value="true" />
</bean>

3』通过重写spring的熟悉方法来实现代码如下

 

package com.japie.injection;

import java.beans.PropertyEditorSupport;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * java.util.Date属性编辑器
 * @author japie
 *
 */
public class UtilDatePropertyEditor extends PropertyEditorSupport {

	private String pattern;
	
	@Override
	public void setAsText(String text) throws IllegalArgumentException {
		System.out.println("---UtilDatePropertyEditor.setAsText()--->" + text);
		try {
			Date date = new SimpleDateFormat(pattern).parse(text);
			this.setValue(date);
		} catch (ParseException e) {
			e.printStackTrace();
			throw new IllegalArgumentException(text);
		}
	}

	public void setPattern(String pattern) {
		this.pattern = pattern;
	}

	
}
 

以及在我们具体的bean当中引用其的配置

 

<bean id="boyMan" class="com.japie.customproperty.BoyMan">
		<property name="birthDay" value="2011-06-17" />
		<property name="username" value="japie"/>
</bean>
分享到:
评论

相关推荐

    Spring定义bean的三种方式和自动注入

    bean加入spring容器管理的方式,bean加入applicationcontext容器的方式

    关于spring boot中几种注入方法的一些个人看法

    主要给大家介绍了关于spring boot中几种注入方法的一些个人看法,文中通过示例代码介绍的非常详细,对大家学习或者使用spring boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    详解Spring中bean的几种注入方式

    主要介绍了详解Spring中bean的几种注入方式,主要介绍了4种注入,主要有属性注入、构造函数注入、工厂方法注入,非常具有实用价值,需要的朋友可以参考下

    java巩固练习Spring 的bean注入方式有几种demo例子

    IOC注入bean有哪几种,写了几种Spring的bean注入方式demo练习例子,欢迎您观看和留言。免费共享浏览、下载。

    Spring Bean三种注入方式详解

    本篇文章主要介绍了Spring Bean三种注入方式详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Spring为IOC容器注入Bean的五种方式详解

    主要介绍了Spring为IOC容器注入Bean的五种方式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    spring装配bean的3种方式总结

    主要给大家介绍了关于spring装配bean的3种方式,文中通过示例代码介绍的非常详细,对大家的学习或者使用Spring具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    Springbean的几种注入方式都了解吗

    主要介绍了Springbean的几种注入方式都了解吗,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    25个经典的Spring面试问答

    Spring有几种配置方式 如何用基于XML配置的方式配置Spring 如何用基于Java配置的方式配置Spring 怎样用注解的方式配置Spring 请解释Spring Bean的生命周期 Spring Bean的作用域之间有什么区别 什么是Spring inner ...

    Spring开发指南

    几种依赖注入模式的对比总结 Spring Bean封装机制 Bean Wrapper Bean Factory ApplicationContext Web Context Spring 高级特性 Web 应用与 MVC Spring MVC Spring MVC指南 基于模板的Web表示层技术 Web...

    java面试Spring.pdf

    1. Spring 介绍 1.1 Spring 的优点 ...说一下Spring基于xml注入bean的几种方式? Spring如何解决循环依赖问题? Spring的自动装配 Spring框架中都用到了哪些设计模式? Spring框架中有哪些不同类型的事件?

    Spring面试专题.pdf

    6、Spring 有几种配置方式? 7、如何用基于 XML 配置的方式配置 Spring? 8、如何用基于 Java 配置的方式配置 Spring? 9、怎样用注解的方式配置 Spring? 10、请解释 Spring Bean 的生命周期? 11、Spring Bean 的...

    Spring面试题.zip

    6、Spring 有几种配置方式? 7、如何用基于 XML 配置的方式配置 Spring? 8、如何用基于 Java 配置的方式配置 Spring? 9、怎样用注解的方式配置 Spring? 10、请解释 Spring Bean 的生命周期? 11、Spring Bean 的...

    Spring面试题含答案.pdf

    25. 解释 Spring 支持的几种 bean 的作用域 26. Spring 框架中的单例 bean 是线程安全的吗? 27. 解释 Spring 框架中 bean 的生命周期 28. 哪些是重要的 bean 生命周期方法? 你能重载它们吗? 29. 什么是 Spring ...

    吴天雄--Spring笔记.doc

    IOC详解,Spring环境搭建,Spring创建Bean的三种方式,scope属性详解(包含单例设计模式),DI详解,Spring的几种注入方式,利用Spring简化Mybatis;第二天内容:AOP(AOP常用概念、Spring的三种aop实现方式、代理...

    SpringFramework常见知识点.md

    - Spring依赖注入的方式有几种? - 一个bean的定义包含了什么?(BeanDefinition) - bean的作用域有哪些? - Spring 的扩展点主要有哪些? - Spring如何解决循环依赖? - 事务的传播行为是什么?有哪些? - 什么是AOP...

    Spring在代码中获取bean的方法小结

    在工作中有时候我们需要在非spring依赖注入或管理的类中获取service、dao等bean对象,这时候用@Autowired和@Resource显然是不行的,那么下面这篇文章就给大家了整理几种获取bean的方式,对大家的学习和工作具有一定...

    高级开发spring面试题和答案.pdf

    spring 三种注入(就是从spring容器中将bean放入对象属性值中) Spring下描述依赖关系@Resource, @Autowired和@Inject的区别与联系 Spring中BeanFactory和ApplicationContext的区别 谈谈Spring IOC的理解,原理与...

    Spring in Action(第2版)中文版

    3.3注入非springbean 3.4注册自定义属性编辑器 3.5使用spring的特殊bean 3.5.1后处理bean 3.5.2bean工厂的后处理 3.5.3配置属性的外在化 3.5.4提取文本消息 3.5.5程序事件的解耦 3.5.6让bean了解容器 3.6...

Global site tag (gtag.js) - Google Analytics