`
uule
  • 浏览: 6359029 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

Spring自定义属性编辑器PropertyEditorSupport + 使用CustomEditorConfigurer注册属性编辑器

阅读更多

1、通过继承JDK 中的 java.beans.PropertyEditorSupport 类来实现自己的编辑器类 ,该类用于实现将String 类型转换成您需要的数据类型。然后我们只需要在Spring 的容器中对这个编辑器进行有效的“注册”便可以实现Spring 在装配Bean 时自动的将String 类型转换成我们自定义的类型。


如何编辑自己的PropertyEditor,其实需要了解一点java.beans包的知识,在该包中,有一个 java.beans.PropertyEditor的接口,它定义了一套接口方法(12个),即通过这些方法如何将一个String变成内部的一个对 象,这两个方法是比较重要的:
     a)setValue(Object value) 直接设置一个对象
     b)setAsText(String text) 通过一个字符串来构造对象,一般在此方法中解析字符串,将构造一个类对象,调用setValue(Object)来完成属性对象设置操作。
 
  2)实现所有的接口方法是麻烦的,java.beans.PropertyEditorSupport 适时登场,一般情况下,我们通过扩展这个方便类即可。


2、CustomEditorConfigurer 类 用于实现在Spring 中注册自己定义的编辑器 。它是Spring 当中一个非常有用的工厂后处理类(工厂后处理通过Spring 的BeanFactoryPostProcessor 接口实现, 它是在Spring 容器启动并初始化之后进行对Spring 容器的操作类)。在Spring 中已经注册了不少编辑器类,他们都用于String 类型转换为其他的数据类型,如URL,Date等。


配置CustomEditorConfigurer 类:

      CustomEditorConfigurer 类中有一个customEditor属性,它是一个Map 类型。通过配置它便实现了自定义的编辑器注册。这个Map 的键值对对应着转换类型和编辑器(转换类型是Key,编辑器是Value)。


自定义编辑器可以简化Spring 的装配Bean。使其更加的简单。不容易发生配置错误。 PS:如果使用Spring 的ApplicationContext容器,那么只需在Spring 的配置文件中进行简单的装配,而对于Bean 工厂可能需要手动的注册才能使用。

 

//User.java

public class User {
   private String name;
   private int age;
   。。。
}
 
//用到User的类:UserContainer.java

public class UserContainer {

private User user;

public void setUser(User user) {
   this.user = user;
}

public void printUser() {
   System.out.println(user.getName() + " " + user.getAge());
}
}
 
//将配置中的转换的类:TransformUser.java

public class TransformUser extends PropertyEditorSupport {

 public void setAsText(String text) {
    String[] data = text.split(",");
    User user = new User();
    user.setName(data[0]);
    user.setAge(Integer.parseInt(data[1]));
    this.setValue(user);
  }
}
 
在applicationContext.xml文件中。

<bean id="user" class="User" />
<bean id="transformUser" class="TransformUser"/>

<bean id="userContainer" class="UserContainer">
     <property name="user" value="liming,23"></property>
</bean>

<bean id="configBean"   class="org.springframework.beans.factory.config.CustomEditorConfigurer">
   <property name="customEditors">
    <map>
       <entry key="User">  <!-- 属性类型 -->  
             <bean class="TransformUser"/>  <!--对应Address的编辑器 -->  
       </entry>
    </map>
   </property>
</bean>

将liming,23这种格式的转换成User类。

例子1:http://www.iteye.com/topic/24660

例子2:http://gundumw100.iteye.com/blog/574440

分享到:
评论
2 楼 我在路上看风景 2015-08-29  
我有个疑问?就是你的text是什么时候有值的,我知道text是待转换的String内容。
1 楼 muqingren 2011-04-01  

相关推荐

    spring 自定义属性编辑器

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

    spring中的自定义属性编辑器

    2. **注册编辑器**:在Spring中,你可以通过两种方式注册自定义属性编辑器。一种是在XML配置文件中使用`propertyEditorRegistrar`元素,另一种是在Java配置中使用`@InitBinder`注解。 在XML配置中: ```xml ...

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

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

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

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

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

    在Spring MVC中,当控制器方法接收请求参数时,如果请求参数与方法参数类型不匹配,Spring会尝试使用属性编辑器进行转换。例如,从字符串转换为日期、颜色代码到Color对象等。自定义属性编辑器需要继承`java.beans....

    spring自定义编辑器

    通过以上步骤,我们不仅解决了类型转换的问题,还深入了解了如何在Spring框架中使用自定义编辑器来扩展其功能。这对于处理复杂的业务逻辑或特定的数据格式非常有帮助。此外,自定义编辑器还可以用于提高应用程序的...

    SpringBatch+Spring+Mybatis+MySql (spring batch 使用jar)

    Spring Batch是一个轻量级的,完全面向...5、提供Spring框架中配置、自定义、和扩展服务。 6、所有存在的核心服务可以很容的被替换和扩展,不影响基础层。 7、提供一个简单的部署模式,利用Maven构建独立的Jar文件。

    spring 自定义事务管理器,编程式事务,声明式事务@Transactional使用

    本教程将深入探讨如何在Spring中实现自定义事务管理器、编程式事务处理以及声明式事务`@Transactional`的使用。 首先,让我们了解事务管理的基本概念。事务是一组数据库操作,这些操作要么全部执行,要么全部回滚,...

    Spring+Spring mvc+Hibernate+Bootstrap、企业级员工信息管理系统

    后台通过自定义注解结合一个访问拦截器实现整个系统的权限控制 04. 系统前台采用全采用的Html+jQuery开发 05. 系统前台与后台的交互全部使用 Ajax 异步请求 06. 自定义 SecureValid 注解实现权限的控制 07. ...

    spring自定义标签例子

    2. **注册标签**:为了让Spring知道如何处理你的自定义标签,你需要在Spring的核心配置文件(如`beans.xml`)中声明这个解析器。通过`&lt;bean&gt;`标签注册一个工厂bean,它的`class`属性指定为你的`BeanDefinitionParser...

    开源测试项目:spring mvc+springsecurity3+ehcache+bootstrap+mysql

    开源测试项目:spring mvc+springsecurity3+ehcache+bootstrap+mysql 内附MySQL表,直接导入就可运行 效果图请移步:http://blog.csdn.net/yangxuan0261/article/details/10053947

    自定义属性编辑及Spring处理器映射

    java中的属性编辑器详细说明及Spring中AnnotationMethodHandlerAdapter说明和DefaultAnnotationHandlerMapping的说明及用法

    浅谈Spring的属性编辑器的使用

    如果没有显式指定,Spring会使用`PropertyEditorManager`来查找默认的属性编辑器。如果需要自定义转换逻辑,可以创建一个实现了`PropertyEditor`接口的类,并在Spring配置中注册它,或者通过`@Component`注解使其...

    spring自定义注解样例

    本示例主要探讨如何在Spring中创建和使用自定义注解,以及与AOP结合实现动态代理。 首先,我们需要了解自定义注解的基本结构。在Java中,自定义注解是以`@interface`关键字定义的。例如,我们可以创建一个名为`...

    Springboot自定义启动器,源码+详细讲解-傻子都能看懂

    一旦自定义启动器创建完成,你可以在其他Spring Boot项目中引入它,就像使用官方的启动器一样。这样,项目就能自动获取并配置你的模块所提供的服务。 6. **源码分析**: 提供的源码应该包含了完整的自定义启动器...

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

    2. **注册属性编辑器**:在Spring配置中,我们需要注册这个自定义属性编辑器。这可以通过`@InitBinder`注解在控制器类中完成,或者在`WebConfig`类中使用`@Bean`方法注册`WebDataBinderFactory`。 3. **集合类型的...

    学生成绩管理系统(Spring MVC+Hibernate+Spring+easyui)(源码+毕设)

    【学生成绩管理系统】是一个基于Java技术的毕业设计项目,采用了经典的SSH(Spring MVC、Hibernate、Spring)框架组合,以及前端界面库EasyUI。这个系统的主要目标是为教育机构提供一个高效、便捷的学生分数记录与...

    activiti+spring+srping Mvc+mybatis+maven整合

    本项目是关于"activiti+spring+spring Mvc+mybatis+maven"的整合,旨在创建一个基于Activiti工作流引擎、Spring、Spring MVC、MyBatis以及Maven的开发环境。下面将详细介绍这些技术及其整合过程。 首先,`activiti`...

    Spring 自定义注解的解析

    在Spring配置类或者XML配置文件中,使用`@ComponentScan`并添加`@ComponentScan annonation`属性,指定自定义注解的名称。这样,Spring在扫描过程中会识别并处理标记了这个注解的类。 ```java import org.spring...

    spring自定义注解+Aspect使用1

    Spring 自定义注解和 Aspect 的使用 在本文中,我们将学习如何在 Spring 项目中使用自定义注解和 Aspect 来实现日志记录功能。我们将从头开始,创建一个简单的 Spring Boot 项目,然后使用自定义注解和 Aspect 来...

Global site tag (gtag.js) - Google Analytics