Spring中的 BeanWrapper

Posted 菜鸟_Admin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring中的 BeanWrapper相关的知识,希望对你有一定的参考价值。

BeanWrapper 是Spring提供的一个用来操作javaBean属性的工具,使用它可以直接修改一个对象的属性。

对于bean属性的操作,大家熟知的主要有下面这些工具类:

  1.Apache的BeanUtils和PropertyUtils

       2.cglib的BeanMap和BeanCopier

  3.spring的BeanUtils

BeanWrapper 的好处在于:

  1.支持设置嵌套属性

  2.支持属性值的类型转换(设置ConversionService)

下面是一个使用BeanWrapper 包装对象的例子:

package com.glmapper.web.test;

import org.springframework.beans.BeanWrapper;
import org.springframework.beans.PropertyAccessorFactory;
import org.springframework.beans.PropertyValue;

public class BeanWrapperTest {
    public static void main(String[] args) {
        User user=new User();
        //通过PropertyAccessorFactory将user对象封装成BeanWrapper
        BeanWrapper bw=PropertyAccessorFactory.forBeanPropertyAccess(user);
        //方式一:直接对属性值进行设置
        bw.setPropertyValue("userName", "张三");
        //方式二:通过PropertyValue进行设置
        PropertyValue pv=new PropertyValue("userName","李四");
        bw.setPropertyValue(pv);
        
        
        System.out.println(user.getUserName());
    }
}
//一个User类
class User{
    private String userName;
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
}

在Spring中,HttpServletBean的属性设置就是通过这种方式来完成的。

 

以上是关于Spring中的 BeanWrapper的主要内容,如果未能解决你的问题,请参考以下文章

死磕 Spring----- IOC 之分析 BeanWrapper

Spring读源码系列番外篇08---BeanWrapper没有那么简单--上

Spring读源码系列番外篇08---BeanWrapper没有那么简单--中

[死磕 Spring 36/43] --- IOC 之分析 BeanWrapper

[死磕 Spring 36/43] --- IOC 之分析 BeanWrapper

源码分析 | BeanWrapper获取Bean属性实现