`
眼光独到
  • 浏览: 63495 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

Spring自定义属性编辑器

阅读更多

     自定义属性编辑器必须继承 PropertyEditorSupport 类,实现其中的setAsText()方法,将字面值转换为属性类型的对象,再调用setValue()方法,设置转置后的属性对象。


public class CustomCarEditor extends PropertyEditorSupport{
 @Override
 public void setAsText(String text) throws IllegalArgumentException {
  System.out.println("调用setAsText()方法");
  if(text==null || text.indexOf(",")==-1){
   throw new IllegalArgumentException();
  }
  String[] infos = text.split(",");
  Car car = new Car();
  car.setBrand(infos[0]);
  car.setMaxSpeed(Integer.parseInt(infos[1]));
  car.setPrice(Double.parseDouble(infos[2]));
  //调用父类的setValue方法设置转换后的属性对象
  setValue(car);
 }

 

 <!-- 配置属性编辑器 -->
 <bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
  <property name="customEditors">
   <map>
   <!-- 定义一个属性编辑器 -->
    <entry>
        <!-- 属性编辑器对应的属性类型 -->
     <key><value>com.Spring.PropertyEditor.Car</value> </key>
     <!-- 对应的属性编辑器Bean -->
     <bean class="com.Spring.PropertyEditor.CustomCarEditor"></bean>
    </entry>
   </map>
  </property>
 </bean>
  
    <bean id="boss" class="com.Spring.PropertyEditor.Boss">
     <property name="name" value="John"></property>
     <!-- 使用上面的属性编辑器完成属性填充操作 -->
     <property name="car" value="宝马,200,200000"></property>
    </bean>
</beans>

public class PropertyEditor {
 public static void main(String[] args) {
  ApplicationContext cxt = new ClassPathXmlApplicationContext       ("com/Spring/PropertyEditor/bean.xml");
  Boss boss = (Boss)cxt.getBean("boss");
  boss.say();
 }
}

    CustomEditorConfigurer是实现了BeanFactoryPostProcessor接口的类,因此是一个Bean工厂后处理器,所以在容器启动后有机会注入自定义的属性编辑器。

    自定义属性编辑器不常用,一般可以通过引用即<ref>其他的Bean即可,但是有时候比较复杂的情况下,会需要将属性对象一步步肢解为最终可用基本类型表示的Bean,反而会很糟糕,这时可以使用自定义属性编辑器,在setAsText()方法中将字面值转化为属性类型对象。

分享到:
评论

相关推荐

    spring 自定义属性编辑器

    NULL 博文链接:https://wooden-baby.iteye.com/blog/506838

    spring中的自定义属性编辑器

    spring中的自定义属性编辑器,是我博客中的源代码,spring中的自定义属性编辑器,是我博客中的源代码

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

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

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

    NULL 博文链接:https://yxwang0615.iteye.com/blog/969360

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

    NULL 博文链接:https://coolszy.iteye.com/blog/522095

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

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

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

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

    spring数据格式转换

    spring数据格式转换 自定义的属性编辑器进行数据绑定

    Spring2.0学习笔记

    1、ICO环境的搭建 2、属性注入 3、自定义属性编辑器 4、AOP实现 5、事务处理 6、Spring事务配置的五种方式 详解 7、Struts与Spring集成方案

    spring.net中文手册在线版

    4.3.3.详细讨论对象属性和构造器参数 4.3.3.1.设置空值 4.3.3.2.设置集合值 4.3.3.3.设置泛型集合的值 4.3.3.4.设置索引器属性 4.3.3.5.内联对象定义 4.3.3.6.idref节点 4.3.3.7.引用协作对象 4.3.3.8.value和ref...

    Spring.3.x企业应用开发实战(完整版).part2

    5.2.3 自定义属性编辑器 5.3 使用外部属性文件 5.3.1 使用外部属性文件 5.3.2 使用加密的属性文件 5.3.3 属性文件自身的引用 5.4 引用Bean的属性值 5.5 国际化信息 5.5.1 基础知识 5.5.2 MessageSource 5.5.3 容器级...

    Spring-Reference_zh_CN(Spring中文参考手册)

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的...

    Spring 2.0 开发参考手册

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...

    Spring攻略(第二版 中文高清版).part1

    2.16 创建自定义属性编辑器 99 2.16.1 问题 99 2.16.2 解决方案 100 2.16.3 工作原理 100 2.17 使用TaskExecutor实现并发性 101 2.17.1 问题 101 2.17.2 解决方案 101 2.17.3 工作原理 102 2.18 小...

    Spring中文帮助文档

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...

    Spring API

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...

    spring chm文档

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...

    Spring攻略(第二版 中文高清版).part2

    2.16 创建自定义属性编辑器 99 2.16.1 问题 99 2.16.2 解决方案 100 2.16.3 工作原理 100 2.17 使用TaskExecutor实现并发性 101 2.17.1 问题 101 2.17.2 解决方案 101 2.17.3 工作原理 102 2.18 小...

    Spring3.x企业应用开发实战(完整版) part1

    5.2.3 自定义属性编辑器 5.3 使用外部属性文件 5.3.1 使用外部属性文件 5.3.2 使用加密的属性文件 5.3.3 属性文件自身的引用 5.4 引用Bean的属性值 5.5 国际化信息 5.5.1 基础知识 5.5.2 MessageSource 5.5.3 容器级...

    Spring in Action(第2版)中文版

    3.4注册自定义属性编辑器 3.5使用spring的特殊bean 3.5.1后处理bean 3.5.2bean工厂的后处理 3.5.3配置属性的外在化 3.5.4提取文本消息 3.5.5程序事件的解耦 3.5.6让bean了解容器 3.6脚本化的bean 3.6.1给...

Global site tag (gtag.js) - Google Analytics