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

  本实例中还涉及到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());

  }

  }