`
zengshaotao
  • 浏览: 787413 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

自定义属性编辑器

 
阅读更多

Spring DI可以注入普通属性,但是像Date类型的就无法被识别。这时可以通过扩展Spring的属性编辑器把配置文件中的字符串转化成相应的对象进行注入。

Spring有自带的属性编辑器,我们也可以写自定义的属性编辑器

自定义属性编辑器:

继承java.beans.PropertyEditorSupport类,重写其中的setAsText(String text)方法。

再把自定义的属性编辑器注入到Spring中。

例子:

 

  1. package com.cos.entity;     
  2. import java.util.Date;     
  3. import java.util.List;     
  4. import java.util.Map;     
  5. import java.util.Set;     
  6.     
  7. public class UserBean {     
  8.     
  9.     private Date birthday;     
  10.     
  11.     public Date getBirthday() {     
  12.         return birthday;     
  13.     }     
  14.     
  15.     public void setBirthday(Date birthday) {     
  16.         this.birthday = birthday;     
  17.     }     
  18. }    

  

 

  1. package com.cos.entity;     
  2.     
  3. import java.beans.PropertyEditorSupport;     
  4. import java.text.ParseException;     
  5. import java.text.SimpleDateFormat;     
  6.     
  7. //自己写一个自定义属性编辑器来继承属性编辑器PropertyEditorSupport     
  8. public class DatePropertyEditor extends PropertyEditorSupport {     
  9.     
  10.     //时间的格式     
  11.     String format;     
  12.     
  13.     public String getFormat() {     
  14.         return format;     
  15.     }     
  16.     
  17.     public void setFormat(String format) {     
  18.         this.format = format;     
  19.     }     
  20.     
  21.     //需要重写属性编辑器的setAsText()方法     
  22.     @Override    
  23.     public void setAsText(String text) {     
  24.         try {     
  25.             SimpleDateFormat f = new SimpleDateFormat(format);     
  26.             //把转换后的值传进去     
  27.             this.setValue(f.parse(text));     
  28.         } catch (ParseException ex) {     
  29.             ex.printStackTrace();     
  30.         }     
  31.     }     
  32. }    

 

spring配置文件 applicationContext.xml :

Xml代码

 

  1. <beans xmlns="http://www.springframework.org/schema/beans"    
  2.     xmlns:jdbc="http://www.springframework.org/schema/jdbc"    
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd     
  5.         http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd">    
  6.     
  7.     <!-- 普通属性注入 -->    
  8.     <bean id="userBean" class="com.cos.entity.UserBean">    
  9.         <!-- 时间属性,需要属性编辑器 -->    
  10.         <property name="birthday" value="2011-03-16"/>    
  11.     </bean>    
  12.     
  13.     <!-- 特殊属性的注入.把特殊属性注入到CustomEditorConfigurer Bean 里 -->    
  14.     <bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">    
  15.         <property name="customEditors">    
  16.             <map>    
  17.                 <entry key="java.util.Date">    
  18.                     <bean class="com.cos.entity.DatePropertyEditor">    
  19.                         <property name="format" value="yyyy-MM-dd"/>    
  20.                     </bean>    
  21.                 </entry>    
  22.             </map>    
  23.         </property>    
  24.     </bean>    
  25. </beans>    

org.springframework.beans.factory.config.CustomEditorConfigurer类可以读取PropertyEditorSupport类及子类,将字符串转化为指定的类型。

PropertyEditorSupport类把要转化的Date类型注入到customEditors Map中。

测试类:

Java代码

 

 

  1. package com.cos.entity;     
  2.     
  3. import org.springframework.beans.factory.BeanFactory;     
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;     
  5.     
  6. public class Main {     
  7.     
  8.     public static void main(String[] args) {     
  9.         //通过spring配置文件返回Bean的工厂对象     
  10.         BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");     
  11.         //Bean工厂通过Bean的id得到JavaBean     
  12.         UserBean ub = (UserBean) factory.getBean("userBean");     
  13.         System.out.println(""+ub.getBirthday());     
  14.     }     
  15. }  
分享到:
评论

相关推荐

    spring 自定义属性编辑器

    这篇博客“spring 自定义属性编辑器”可能详细介绍了如何在Spring中创建和注册自定义属性编辑器,以满足特定的业务需求。 首先,了解Spring中的属性编辑器机制。Spring会自动寻找并使用`java.beans.PropertyEditor`...

    Spring学习笔记(11)----自定义属性编辑器

    在“Spring学习笔记(11)----自定义属性编辑器”这篇博文中,作者深入探讨了如何自定义属性编辑器以满足特定需求。 首先,我们需要了解属性编辑器的工作原理。当IoC容器读取配置文件时,如果发现一个属性值需要...

    spring2.0(三) 自定义属性编辑器

    在Spring 2.0框架中,自定义属性编辑器(Custom Property Editor)是一个重要的功能,它允许开发者扩展Spring的默认属性绑定机制,以处理特定类型的转换。本文将深入探讨这一特性,结合源码分析和实际应用,帮助你...

    C# 自定义属性编辑器(UITypeEditor )

    本篇将深入探讨如何利用C#实现自定义属性编辑器,并结合UserControl和Component两种方式来实现属性编辑。 首先,理解UITypeEditor的工作原理是至关重要的。UITypeEditor是一个接口,位于System.Drawing.Design命名...

    spring中的自定义属性编辑器

    在Spring中,我们可以通过自定义属性编辑器来处理特定类型的值,例如日期、颜色代码或其他自定义对象。这在配置bean属性或处理HTTP请求参数时特别有用。 自定义属性编辑器的创建通常涉及以下步骤: 1. **创建编辑...

    springmvc自定义属性编辑器和参数解析器

    自定义属性编辑器需要继承`java.beans.PropertyEditorSupport`类,并重写`setAsText()`和`getAsText()`方法,前者用于将文本转换为对象,后者则是将对象转换为字符串。注册自定义属性编辑器可以通过`@InitBinder`...

    HandyControl的属性编辑器如何绑定自定义控件,并集成到自定义编辑器

    在本文中,我们将深入探讨如何在WPF应用中使用HandyControl的属性编辑器来绑定自定义控件并集成到自定义编辑器中。HandyControl是一个强大的UI库,为WPF开发者提供了丰富的预设控件和样式,而PropertyGrid控件则常...

    Qt编写的自定义控件属性设计器

    使用QtPropertyBrowser提供的控件作为属性编辑器,例如滑块、文本框等。 5. **实现属性导入导出** 为了支持数据的持久化,还需要实现属性的XML导入和导出功能。这通常涉及到将属性值序列化为XML格式,以及从XML...

    SpringMVC自定义属性编辑器详解及实例

    SpringMVC自定义属性编辑器详解及实例 自定义springMVC的属性编辑器主要有两种方式,一种是使用@InitBinder标签在运行期注册一个属性编辑器,这种编辑器只在当前Controller里面有效;还有一种是实现自己的 ...

    .NET自定义组件属性编辑器简单例程(ComponentDesignDemo)

    在.NET框架中,开发自定义组件是常见的任务,而为这些组件设计自定义的属性编辑器则能够极大地提升用户...这样的实践有助于提升组件的设计体验,尤其对于需要特殊交互方式的属性来说,自定义属性编辑器的价值尤为突出。

    Delphi 样例-属性编辑器

    在 Delphi 开发过程中,有时我们需要自定义属性编辑器来更好地管理和展示对象的属性。这个样例“Delphi 样例-属性编辑器”就专注于如何利用 TcxRTTIInspector 来实现这一功能。 TcxRTTIInspector 是 DevExpress ...

    属性编辑器

    通过MyPropertyEditor.sln、MyPropertyEditor.suo和MyPropertyEditor这些文件名,我们可以推测这是一个关于自定义属性编辑器的项目。.sln是Visual Studio解决方案文件,包含了项目的所有相关信息;.suo是用户选项...

    SpringPropertyEditorDemo:演示使用自定义属性编辑器绑定Spring-MVC中用户定义的对象的集合

    这个"SpringPropertyEditorDemo"项目是为了演示如何使用自定义属性编辑器来处理用户定义的对象集合。下面我们将深入探讨这个主题。 首先,Spring MVC中的模型-视图-控制器(MVC)架构允许我们通过控制器处理HTTP...

    Winform 属性编辑器 propertyGrid示例 下拉列表框

    1. **创建自定义属性编辑器**: 首先,我们需要创建一个继承自`UITypeEditor`的类,这是.NET框架提供的基础类,用于实现自定义的属性编辑器。在该类中,我们可以覆盖`EditValue`方法来提供下拉列表框的编辑体验。 ...

    示范如何制作 VCL 构件的属性值编辑器

    你可以在这里创建一个简单的 VCL 构件,然后在 IDE 中查看和使用你的自定义属性编辑器。 6. **编译和安装组件包**:最后,编译你的项目,并使用 Delphi IDE 的 "Component | Install Packages" 功能来安装组件包。...

    C# 自定义组件编辑器 Demo

    这个编辑器特别关注于下拉框、可展开的类型转换器、自定义UI属性编辑器以及下拉可视控件编辑器等功能。 首先,让我们详细了解一下这些关键概念: 1. **C#**:这是一种面向对象的编程语言,广泛应用于Windows应用...

    一个关于C# PropertyGrid增加自定义属性的范例。

    2. **属性编辑器(UITypeEditor)**: 如果需要提供更复杂的编辑体验,比如日期选择器、颜色选择器等,我们可以实现`UITypeEditor`接口。`EditValue`方法会被调用来呈现编辑界面,并处理用户的输入。 3. **属性...

    (九)delphi自定义控件属性编辑

    本节将深入探讨如何在Delphi中创建自定义控件并定制其属性编辑器。 首先,创建自定义控件通常是从继承TComponent或已有的控件类开始的。例如,你可以从TButton派生一个新的控件,增加新的功能或者改变原有的行为。...

Global site tag (gtag.js) - Google Analytics