前言: 使用spring的属性注入可以为一个实体bean(有对应的set方法)的属性注入值,例如:
<bean id="studySPro" class="study.spring.StudySPro">
<property name="intValue" value="100"></property>
<property name="strValue" value="stringValue"></property>
<property name="doubleValue" value="10.36"></property>
<property name="listValue">
<list>
<value>listValue1</value>
<value>listValue2</value>
<value>listValue3</value>
</list>
</property>
<property name="mapValue">
<map>
<entry key="key1" value="value1"/>
<entry key="key2" value="value2"/>
<entry key="key3" value="value3"/>
</map>
</property>
<property name="setValue">
<set>
<value>setValue1</value>
<value>setValue2</value>
<value>setValue3</value>
</set>
</property>
<property name="arrayStrValue">
<list>
<value>arrayStrValue1</value>
<value>arrayStrValue2</value>
<value>arrayStrValue3</value>
</list>
</property>
<property name="dateValue" value="1988-02-16"></property>
</bean>
当在对一个java.util.Date类型的属性注入值的时候,会出现异常,因为spring默认的方式不能够将类似"1988-02-16"的字符串解析为java.util.Date类型.为了解决这个问题,我们需要自己编写将类似"1988-02-16"这样的字符串解析为Date对象的方式,就是这里要说明的 “自定义属性编辑器” .
首先定义一个"自定义属性编辑器类",该类继承了java.beans.PropertyEditorSupport,并且覆写该类的setAsText(String text)方法,通过这个text参数,我们可以拿到欲转换的字符串,例如"1988-02-16".
package study.spring;
import java.beans.PropertyEditorSupport;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DatePropetyEdtor extends PropertyEditorSupport{
private String format = "yyyy-MM-dd";
@Override
public void setAsText(String text) throws IllegalArgumentException {
DateFormat df = new SimpleDateFormat(format);
try {
Date date = df.parse(text);
this.setValue(date);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
注意 : 这个setAsText方法并没有返回值,我们通过调用setValue(Object obj)方法使得我们将字符串转换后的Date对象生效.
最后,要使得spring能够识别并使用我们的自定义属性编辑器,我们需要将这个类注入到一个spring的类的属性中,该属性是org.springframework.beans.factory.config.CustomEditorConfigurer类的customEditors属性,该属性是一个map类型,我们的注入方式类似这样:
<?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:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="customEditorConfigurer" class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<entry key="java.util.Date">
<bean class="study.spring.DatePropetyEdtor"></bean>
</entry>
</map>
</property>
</bean>
</beans>
到这里,我们的自定义属性编辑器就可以正常工作了.
其他 :
对于例子代码中 <property name="dateValue" value="1988-02-16"></property>,如果这里我们注入的值变为 "1988/02/16",则又会出异常了,因为我们的 format = "yyyy-MM-dd",对于这种情况,我们可以将转换格式format也抽取出来,使用spring的注入来为其赋值. 例如在构造函数中为format赋值,或者为format添加一个set方法。
分享到:
相关推荐
在Spring中,我们可以通过自定义属性编辑器来处理特定类型的值,例如日期、颜色代码或其他自定义对象。这在配置bean属性或处理HTTP请求参数时特别有用。 自定义属性编辑器的创建通常涉及以下步骤: 1. **创建编辑...
在“Spring学习笔记(11)----自定义属性编辑器”这篇博文中,作者深入探讨了如何自定义属性编辑器以满足特定需求。 首先,我们需要了解属性编辑器的工作原理。当IoC容器读取配置文件时,如果发现一个属性值需要...
在Spring 2.0框架中,自定义属性编辑器(Custom Property Editor)是一个重要的功能,它允许开发者扩展Spring的默认属性绑定机制,以处理特定类型的转换。本文将深入探讨这一特性,结合源码分析和实际应用,帮助你...
自定义属性编辑器需要继承`java.beans.PropertyEditorSupport`类,并重写`setAsText()`和`getAsText()`方法,前者用于将文本转换为对象,后者则是将对象转换为字符串。注册自定义属性编辑器可以通过`@InitBinder`...
### Spring自定义编辑器详解 #### 一、引言 在Spring框架中,自定义编辑器主要用于处理数据类型的转换问题,特别是在将用户输入的数据转换为Java对象时非常有用。例如,用户通过表单提交了一个日期格式的字符串,...
java中的属性编辑器详细说明及Spring中AnnotationMethodHandlerAdapter说明和DefaultAnnotationHandlerMapping的说明及用法
在Spring框架中,属性编辑器(PropertyEditor)是一个关键组件,它负责将配置文件中非标准格式的数据转换为JavaBean的可识别类型。属性编辑器是基于JavaBeans规范的,因此理解这个概念需要先了解JavaBean和JavaBeans...
总之,`SpringPropertyEditorDemo`是一个很好的学习资源,展示了如何在Spring MVC中通过自定义属性编辑器实现用户定义对象集合的绑定。通过这个项目,开发者可以深入理解Spring MVC的数据绑定机制,并掌握处理复杂...
本文档记录了尚学堂Spring学习笔记的重要知识点,涵盖了Spring配置文件的设置、普通属性的注入、自定义属性编辑器、公共属性的注入、Spring注解等内容。 一、Spring配置文件的设置 在MyEclipse中编写Spring配置...
**7.9 spring自定义属性编辑器** 允许开发者定义自己的转换规则,以满足特定的需求。 #### AOP面向切面 **8.1 AOP概述** 面向切面编程是一种编程范式,用于处理横切关注点,即那些散布在整个应用程序中的、与...
本文将深入探讨Spring自定义标签的概念、实现过程及其在实际开发中的应用。 首先,理解Spring自定义标签的核心思想:通过扩展Spring的`BeanDefinitionParser`接口或使用`BeanDefinitionBuilder`类,我们可以创建...
总的来说,Spring框架通过其强大的依赖注入机制、灵活的对象作用域和自定义属性编辑器等功能,极大地简化了Java应用程序的开发和维护,使得开发者可以专注于业务逻辑,而非底层的基础设施。理解和掌握这些核心概念...
文档中提到了“UtilDatePropertyEditor”,这说明学习者在学习如何在Spring中自定义属性编辑器,以便进行复杂数据类型的转换,如将字符串转换为Date对象。 8. 配置Spring 文档中提到了多个Spring配置相关的知识点,...
Spring内建了一些基本的属性编辑器,但你也可以自定义属性编辑器来满足特定需求。自定义属性编辑器需要继承`PropertyEditorSupport`类,并覆盖`setAsText()`方法。例如,你可以创建一个`UtilDatePropertyEditor`来将...
在这个类中,我们可以通过`initBinder`方法注册自定义的日期编辑器,如`CustomDateEditor`,将日期格式设置为"yyyy-MM-dd",并设置lenient属性为false以确保日期解析的严格性。 此外,如果需要处理时间戳...
产品特点编辑器语法高亮发现和替换HTML即时预览文件树结构目录层次编辑,预览,编辑/预览切换文章标题大纲MarkdownToHTML支持Windows,Linux,MacOs去做数学公式支持时序图,流程图支持自定义CSS属性更多的设置选项...
3. **自定义属性编辑器**:Spring允许开发者自定义属性编辑器,用于处理类型转换,比如将字符串转换为日期等复杂类型,这样在注入时可以处理不同类型的属性。 4. **公共属性的注入**:当多个Bean需要共享同一属性值...
在Spring框架中,属性注入(Property Injection)是一种...同时,通过自定义属性编辑器,我们可以处理更复杂的类型转换,增强Spring的灵活性。了解并熟练掌握这些知识,将有助于编写出更加解耦和可维护的Spring应用。
WinForm版Html编辑器是一种专为Windows Forms应用程序设计的用户界面组件,用于在桌面应用中创建...具体使用方法通常会在库的文档或示例代码中详细说明,包括如何添加控件到表单、配置编辑器属性、处理用户交互等步骤。