通过Setters方式对日期属性及日期格式进行IOC注入

 Spring不直接支持对Date类型的IOC依赖关系的注入,而提供了类似于Struts中的converte一样的属性编辑器,需要程序员自己写相应的类,并将其注册。

 

本实例中还涉及到Spring中采用多个配置文件,也涉及到对日期格式的注入-------更加灵活

 

Date属性类: DatePropertyInjection.java

package com.zhmg.spring;

 

import java.util.Date;

 

public class DatePropertyInjection {

 

    private Date date;

 

    public Date getDate() {

       return date;

    }

 

    public void setDate(Date date) {

       this.date = date;

    }

}

 

 

属性编辑器类:PropertyEditor.java

package com.zhmg.spring;

 

import java.beans.PropertyEditorSupport;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

 

/**

 * 自定义属性编辑器处理java.util.Date类型的属性

 * @author Administrator

 *

 */

public class PropertyEditor extends PropertyEditorSupport {

       String format = "yyyy-MM-dd";

       public void setFormat(String format) {

              this.format = format;

       }

       @Override

       public void setAsText(String arg0) throws IllegalArgumentException {

              SimpleDateFormat dateFormat = new SimpleDateFormat(format);

             

              try {

                     Date date = dateFormat.parse(arg0);

                     this.setValue(date);

              } catch (ParseException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

             

       }

 

}

 

applicationContextBeans.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"

    xmlns:aop="http://www.springframework.org/schema/aop"

    xmlns:tx="http://www.springframework.org/schema/tx"

    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd

           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd

           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">

 

    <bean id="dateProperty" class="com.zhmg.spring.DatePropertyInjection">

       <property name="date">

           <value>2009-8-28</value>

       </property>

    </bean>

</beans>

 

 

 

applicationContextBeans.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"

    xmlns:aop="http://www.springframework.org/schema/aop"

    xmlns:tx="http://www.springframework.org/schema/tx"

    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd

           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd

           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">

<!--

    <bean id="dateProperty" class="com.zhmg.spring.DatePropertyInjection">

       <property name="date">

           <value>2009-8-28</value>

       </property>

    </bean>

 -->

    <bean id="editor" class="org.springframework.beans.factory.config.CustomEditorConfigurer">

       <property name="customEditors">

           <map>

              <entry key="java.util.Date">

                  <bean class="com.zhmg.spring.PropertyEditor">

                         <!—对日期格式注入-->

                     <property name="format" value="yyyy-MM-dd"/>

                  </bean>

              </entry>

           </map>

        </property>

    </bean>

</beans>

 

 

测试单元:InjectionTest.java

package com.zhmg.spring;

 

import junit.framework.TestCase;

 

import org.springframework.beans.factory.BeanFactory;

import org.springframework.context.support.ClassPathXmlApplicationContext;

 

public class InjectionTest extends TestCase {

 

       BeanFactory factory;

       protected void setUp() throws Exception {

//采用通配符的方式读取所有以applicationContext开头的配置文件

              factory = new ClassPathXmlApplicationContext("applicationContext*.xml");

       }

 

       public void testInjection(){

 

       DatePropertyInjection dateProp = (DatePropertyInjection)factory.getBean("dateProperty");

             

              System.out.println("date=" + dateProp.getDate());

      

       }

      

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值