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

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 开发中,由于浏览器端...

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

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

    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.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 的魅力

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

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

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

    夏昕-SpringGuide(Spring 开发指南).pdf

    - **BeanWrapper**:提供了一种封装Bean的方法,允许操作Bean的属性,包括读取、设置和转换。它是Spring框架内部实现依赖注入的重要工具。 - **BeanFactory**:是Spring框架中最基本的容器,负责实例化、定位和...

    Spring 开发参考手册

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

    spring guide

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

    Spring 2.0 开发参考手册

    7.3.2. Spring里的通知类型 7.4. Spring里的advisor(Advisor) API 7.5. 使用ProxyFactoryBean创建AOP代理 7.5.1. 基础 7.5.2. JavaBean属性 7.5.3. 基于JDK和CGLIB的代理 7.5.4. 对接口进行代理 7.5.5. 对...

    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的核心接口之一,负责实例化、定位和配置应用程序中的...

Global site tag (gtag.js) - Google Analytics