装
Spring 自定义属性编辑器
Spring DI注入的时候可以把普通属性注入进来,但是像Date类型的就无法被识别。这时可以通过Spring的属性编辑器把配置文件中的字符串转化成相应的对象进行注入。
Spring有自带的属性编辑器,我们也可以写自定义的属性编辑器
自定义属性编辑器:
继承java.beans.PropertyEditorSupport类,重写其中的setAsText(String text)方法。
再把自定义的属性编辑器注入到Spring中。
例子:
JavaBean类
package
import
import
import
import
public class
private
public
return
}
public void
this.birthday = birthday;
}
}
自定义属性编辑器
package
import
import
import
//自己写一个自定义属性编辑器来继承属性编辑器PropertyEditorSupport
public class DatePropertyEditor extends
//时间的格式
String format;
public
return
}
public void
this.format = format;
}
//需要重写属性编辑器的setAsText()方法
@Override
public void
try
new
//把转换后的值传进去
this.setValue(f.parse(text));
catch
ex.printStackTrace();
}
}
}
spring配置文件 applicationContext.xml :
Xml代码
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
>
<!-- 普通属性注入 -->
<bean id="userBean" class="com.cos.entity.UserBean">
<!-- 时间属性,需要属性编辑器 -->
<property name="birthday" value="2011-03-16"/>
</bean>
<!-- 特殊属性的注入.把特殊属性注入到CustomEditorConfigurer Bean 里 -->
<bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<entry key="java.util.Date">
<bean class="com.cos.entity.DatePropertyEditor">
<property name="format" value="yyyy-MM-dd"/>
</bean>
</entry>
</map>
</property>
</bean>
</beans>
org.springframework.beans.factory.config.CustomEditorConfigurer类可以读取PropertyEditorSupport类及子类,将字符串转化为指定的类型。
PropertyEditorSupport类把要转化的Date类型注入到customEditors Map中。
测试类:
package
import
import
public class
public static void
//通过spring配置文件返回Bean的工厂对象
new ClassPathXmlApplicationContext("applicationContext.xml");
//Bean工厂通过Bean的id得到JavaBean
"userBean");
""+ub.getBirthday());
}
}
标签:自定义,Spring,编辑器,import,public,属性 From: https://blog.51cto.com/u_2465818/6212435