`
san_yun
  • 浏览: 2676146 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

spring的类型转换机制(BeanWrapper)

 
阅读更多

spring作为一个beanFactory,免不了要做类型转化,这些工作都是委托给BeanWrapper

 

先来看一个简单的例子:

Blog object = new Blog();
BeanWrapper bean = new BeanWrapperImpl(object);
bean.setPropertyValue("id", "1");
bean.setPropertyValue("buyable", "true");
System.out.println(object.getId());
System.out.println(object.isBuyable()); 

 

BeanWrapper具体又是怎么做类型转换的呢?其实是通过PropertyEditorSupport,这个类实现了PropertyEditor,它有各种类型的继承类,比如CustomNumberEditor,CustomDateEditor分别处理Number和日志类型。

 

另外spring还提供了很多助手方法来获取bean的信息,比如要获取一个方法的参数信息:

PropertyDescriptor pd = bean.getPropertyDescriptor(propertyName);

MethodParameter mp = BeanUtils.getWriteMethodParameter(pd);

 

查看一个bean是否可写:

bean.isWritableProperty()

 

 

当然,最强大的是能嵌套设置属性,如:
    //tb中有个spouse的属性,也为TestBean,这样
    bw.setPropertyValue("spouse.name", "tom");
    //等价于tb.getSpouse().setName("tom");
    //bw 同样支持数组和集合,map属性设置
    bw.getPropertyValue("array[0].name");
    bw.getPropertyValue("map[key4][0].name");
   
    beans包 还提供了一个PropertyValues用于保存多个属性值,默认的实现MutablePropertyValues
    MutablePropertyValues pvs = new MutablePropertyValues();
    pvs.addPropertyValue("array[0].name", "name5");
    pvs.addPropertyValue("array[1].name", "name4");
    bw.setPropertyValues(pvs);

 

 

参考:http://www.iteye.com/topic/43048

分享到:
评论

相关推荐

    第十五章 Spring 类型转换(Type Conversion)1

    总结来说,Spring 的类型转换机制是一个强大而灵活的系统,它涵盖了从传统的 `PropertyEditor` 到现代的 `Converter` 和 `GenericConverter` 接口。理解并掌握这一机制,可以帮助开发者更好地处理应用程序中的类型...

    25 Spring Core 数据绑定之BeanWrapper实现示例及背后原理探究慕课专栏1

    数据绑定的核心在于`PropertyEditor`,这是Spring用来进行类型转换的关键组件。当我们尝试将字符串或者其他非基本类型的数据赋值给一个JavaBean的属性时,Spring会查找合适的`PropertyEditor`来完成转换。这个过程在...

    《Spring 4 参考文档》高清电子版+书签

    Spring的类型转换系统允许应用在运行时转换数据类型。 Spring AOP(面向切面编程)部分介绍了Spring AOP的编程模型,以及@AspectJ注解支持和基于XML的AOP配置。Spring AOP允许开发者将横切关注点(cross-cutting ...

    Spring5.1中文参考指南.pdf

    - **Spring类型转换**:Spring支持多种类型转换策略。 - **Spring字段格式化**:如何格式化日期等类型字段。 - **配置全局Date和Time格式**:统一配置日期时间格式。 - **SpEL(Spring Expression Language)** -...

    gwtbean:一个使用 JavaScriptObject 的概念,如 Spring BeanWrapper

    Gwt-Bean 是一个针对 Google Web Toolkit (GWT) 平台设计的库,它借鉴了 Spring 框架中的 BeanWrapper 概念,旨在帮助开发者更方便地处理 Java 对象与 JavaScriptObject 之间的交互。在 GWT 开发中,由于浏览器端...

    spring_FrameWork3.0

    - **通用的类型转换和数据格式化系统:** 引入了一个新的类型转换和数据格式化系统,提高了数据处理的灵活性。 - **数据层的改进:** 包括对 JDBC 的进一步封装,以及对 ORM 框架的更好支持。 - **Web 层的改进:** ...

    26 Spring Core 数据绑定之DataBinder实现示例及背后原理探究慕课专栏(1)1

    然而,当类型不匹配时,BeanWrapper会抛出`org.springframework.beans.TypeMismatchException`异常。 2. **DataBinder实现**: DataBinder是Spring提供的更高级别的数据绑定工具,它不仅包含了BeanWrapper的功能,...

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

    1.5.4 通用类型转换系统和属性格式化系统 1.5.5 数据访问层新增OXM功能 1.5.6 Web层的增强 1.5.7 其他 1.6 Spring对Java版本的要求 1.7 如何获取Spring 1.8 小结 第2章 快速入门 2.1 实例功能概述 2.1.1 比Hello ...

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

    7.3.2. Spring里的通知类型 7.3.2.1. 拦截around通知 7.3.2.2. 前置通知 7.3.2.3. 异常通知 7.3.2.4. 后置通知 7.3.2.5. 引入通知 7.4. Spring里的advisor(Advisor) API 7.5. 使用ProxyFactoryBean创建AOP代理 ...

    品味Spring 的魅力

    - 在Spring框架中,BeanWrapper广泛应用于Bean的属性填充、验证以及转换等场景。 - 它简化了对复杂对象模型的操作,尤其是在处理多层嵌套的Bean时尤为明显。 #### 四、Bean的制造工厂:BeanFactory与...

    Spring 开发参考手册

    - **属性编辑器** (Property Editor): 用于转换不可直接转换的数据类型,如将字符串转换为日期等。 - **数据绑定** (Data Binding): 将 HTTP 请求中的参数与 Java 对象属性之间建立映射关系。 - **BeanWrapper**: -...

    hibernate and spring 读书笔记hibernate and spring 读书笔记

    3. **异常转换**:Spring可以将Hibernate的异常转换为一致的、面向应用程序的异常,简化了错误处理。 ### 示例代码分析 给定的部分内容示例中,可以看到Spring配置文件`applicationContext.xml`的定义,以及如何...

    spring guide

    通过对Spring框架核心概念的详细解读,如依赖注入的不同实现类型、Bean封装机制等,本书为开发者提供了坚实的基础,助力他们在实际项目中灵活运用Spring框架,构建高效、可维护的企业级应用程序。无论是新手还是有...

    Spring框架的设计理念与设计模式分析

    此外,Core组件还提供了一系列实用工具类,如类型转换工具、验证工具等。 Core组件的设计体现了工厂模式、装饰器模式等设计模式,使得Bean的创建和管理更加灵活。 #### 核心组件间的协作方式 Spring框架的核心...

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

    1.5.4 通用类型转换系统和属性格式化系统 1.5.5 数据访问层新增OXM功能 1.5.6 Web层的增强 1.5.7 其他 1.6 Spring对Java版本的要求 1.7 如何获取Spring 1.8 小结 第2章 快速入门 2.1 实例功能概述 2.1.1 比Hello ...

    Spring开发指南

    - **BeanWrapper**:BeanWrapper是Spring提供的一个包装器接口,用于操作Bean的属性,支持读写操作和类型转换等功能。 - **BeanFactory**:BeanFactory是Spring的核心接口之一,负责实例化、定位和配置应用程序中的...

    spring-frame-4-reference

    - **Spring Type Conversion**:Spring提供了一套完整的类型转换机制。 - **Spring Field Formatting**:用于格式化字段值。 以上只是Spring Framework 4的一部分知识点,更多细节和高级特性还需要根据实际需求...

Global site tag (gtag.js) - Google Analytics