spring如何注入Date类型的属性

转载 2016年08月29日 14:10:37
spring可以为属性注入基本类型的值,也可以注入一个bean。当想注入非基本类型的值就得用到属性编辑器。它一般用在类型无法识别,如日期等。


实现步骤为以下两步:


1)继承PropertyEditorSupport


2)重写其setAsText方法,text是配置文件中的值(也就是为bean注入的值),我们就是将这个text按照需求进行转换。


先看下没用属性编辑器的情况:




    public class MyDate {  
        private Date date;  
      
        public Date getDate() {  
            return date;  
        }  
      
        public void setDate(Date date) {  
            this.date = date;  
        }  
      
        public static void main(String[] args) {  
            ApplicationContext context = new FileSystemXmlApplicationContext(  
                    "classpath:com/pb/propertyeditor/applicationContext.xml");  
            MyDate date = (MyDate) context.getBean("md");  
            System.out.println(date.getDate());  
        }  
    }  


bean id="md" class="com.pb.propertyeditor.MyDate">
<property name="date">
<value>2011-1-1</value>
</property>
</bean>


发生异常:


Caused by: 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


发生异常,没有发现匹配的编辑器或转换器。




现在需要的就是定义一个属性编辑器,并在spring中加入



    public class CustomerProperty extends PropertyEditorSupport {  
        String format;  
      
        public String getFormat() {  
            return format;  
        }  
      
        public void setFormat(String format) {  
            this.format = format;  
        }  
      
        // text为需要转换的值,当为bean注入的类型与编辑器转换的类型匹配时就会交给setAsText方法处理  
        public void setAsText(String text) throws IllegalArgumentException {  
            SimpleDateFormat sdf = new SimpleDateFormat(format);  
            try {  
                this.setValue(sdf.parse(text));  
            } catch (ParseException e) {  
                e.printStackTrace();  
            }  
        }  
    }  




    <bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">   <!--配置一个自定义编辑器-->  
            <property name="customEditors"><span style="white-space:pre">     </span><!--需要编辑的属性类型,是一个map-->  
                <map>  
                    <entry key="java.util.Date">  
                        <bean class="com.pb.propertyeditor.CustomerProperty">  
                            <property name="format" value="yyyy-mm-dd" />  <!--注入需要转换的格式-->  
                        </bean>  
                    </entry>  
                </map>  
            </property>  
        </bean>  
      
        <bean id="md" class="com.pb.propertyeditor.MyDate">  
            <property name="date">  
                <value>2011-1-1</value>  
            </property>  
        </bean>  




输出结果:Sat Jan 01 00:01:00 CST 2011

Sping注入Date类型的3种方式

测试Bean: public class DateBean { private Date birthday; public Date getBirthday() { return birt...
  • u011165335
  • u011165335
  • 2016年03月31日 20:40
  • 895

Spring两大依赖注入的注入时间

Spring两大依赖注入的注入时间    如果注入类有构造方法,那么Spring赋值注入是在类实例化之后完成,即先调用构造方法完成类实例化,再进行值注入。下面具体介绍:   applicatio...
  • localhost01
  • localhost01
  • 2016年06月01日 15:34
  • 3172

Spring给bean注入日期属性的方法

通常情况下,我们给Spring的bean注入属性可以通过setter方法和构造器方法给bean注入属性值,这两种方法都需要使用property标签给bean的属性赋值。 如下所示,使用setter方...
  • u013216156
  • u013216156
  • 2017年11月24日 17:06
  • 87

Spring注入Date类型的属性,自定义Date属性编辑器

spring中注入时间日期(java.util.Date)类型的属性的时候不能直接注入Date类型,需要进行类型转换。 1、编写UtilDatePropertyEditor类import java....
  • whiteblack_dream
  • whiteblack_dream
  • 2017年06月04日 19:33
  • 507

Spring注入日期到bean属性-CustomDateEditor

这一个Spring例子向您展示如何为bean属性注入一个“日期”。 package com.yiibai.common; import java.util.Date; public cl...
  • Wit_tang
  • Wit_tang
  • 2016年05月27日 10:31
  • 2082

Spring基础之属性注入总结

spring是开源的轻量级框架,核心主要两部分: (1)aop:面向切面编程,扩展功能不是修改源代码实现 (2)ioc:控制反转, - 比如有一个类,在类里面有方法(不是静态的方法),调用类里面...
  • qq_25827845
  • qq_25827845
  • 2016年12月26日 20:04
  • 2975

Spring MVC 之 处理Date类型

在使用Spring MVC的项目中,我们经常需要遇到处理时间类型的字段。一般情况下大家可能都是通过String来接收这个对象,然后再把它转化成Date类型。如何能够优雅的处理这些时间类型的字段呢?下面...
  • u012410733
  • u012410733
  • 2017年05月26日 19:54
  • 1888

SpringMVC处理Date类型的成员变量方法

在使用 SpringMVC 的时候,我们可能需要将一个对象从 View 传递给 Controller 。而当这个 Object 只是一些简单的 String , int 或者 boolean 类型的成...
  • z69183787
  • z69183787
  • 2014年10月22日 11:25
  • 26726

Sping注入Date类型的3种方式

测试Bean: public class DateBean { private Date birthday; public Date getBirthday() { return birt...
  • u011165335
  • u011165335
  • 2016年03月31日 20:40
  • 895

Spring MVC 日期自动注入

整了一上午,各种查资料,好多都说要自己给spring 绑定自定义转换方法。感觉spring mvc 不会这么差劲呀,连个日期自动转换注入的方法都没有? 最终查阅文档发现,spring mvc 自带的都...
  • u013314786
  • u013314786
  • 2015年09月27日 14:32
  • 869
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:spring如何注入Date类型的属性
举报原因:
原因补充:

(最多只允许输入30个字)