|
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()); } }
|
|