BeanUtils:通过反射控制JavaBean属性的实用方法。
     1.cloneBean(Object) Object
         克隆一个bean是基于可用属性的get和set方法,即使这个bean类没有实现Cloneable接口方法的实现是有BeanUtilBean的newbean = bean.getClass().newInstance();
对newbean的属性设值采用PropertyUtilsBean.copyProperties内部采用java的内省调用get/set方法进行获取bean属性/设置newbean属性。
    API:
      Note: this method creates a shallow clone.采用浅复制的方式
    实例:

  public class Address
{
private String province;
private String city;
//getter/setter
}
public class Person
{
private Integer id;
private String name;
private Address address;
//getter/setter
}
public void test1()
{
Person bean = new Person();
Address address = new Address();
address.setProvince("hunan");
address.setCity("huaihua");
bean.setId(1);
bean.setName("name1");
bean.setAddress(address);
try
{
//----test shadow clone bean----
Person bean2 = (Person) BeanUtils.cloneBean(bean);
bean2.getAddress().setProvince("beijing");
bean2.getAddress().setCity("beijing");
System.out.println(bean.getAddress()+":::"+bean2.getAddress()); }catch(Exception e)
{
e.printStackTrace();
}
}

  结果:
    Address [province=beijing, city=beijing]:::Address [province=beijing, city=beijing]

  2.copyProperties(Object dest, Object orig)
            复制属性值从源bean到目标bean对于所有的属性,采用的是shallow copy方式,内部采用内省的方式获取get/set方法来获取源对象的属性和对目标对象的设值。
       实例:

    

 @Test
public void testcopyProperties()
{
Person bean = new Person();
Address address = new Address();
address.setProvince("hunan");
address.setCity("huaihua");
bean.setId(1);
bean.setName("name1");
bean.setAddress(address);
Person dest = new Person();
try
{
BeanUtils.copyProperties(dest, bean);
System.out.println("dest "+dest);
}catch(Exception e)
{
e.printStackTrace();
}
}

  结果:
    dest Person [id=1, name=name1, address=Address [province=hunan, city=huaihua]]

  实例:

    

 public class Student
{
private Integer id;
private String name;
private Date date;
//gettter/settter
}
@Test
public void testcopyProperties()
{
Person bean = new Person();
Address address = new Address();
address.setProvince("hunan");
address.setCity("huaihua");
bean.setId(1);
bean.setName("name1");
bean.setAddress(address);
Student dest = new Student();
try
{
BeanUtils.copyProperties(dest, bean);
System.out.println(dest);
}catch(Exception e)
{
e.printStackTrace();
}
}

  结果:
    Student [id=1, name=name1, date=null]

  3.copyProperty(Object bean, String name, Object value)
    复制一个具体的属性值到具体的bean中,并执行所需的任何类型转换。采用内省的方式对bean进行设值。
  4.Map<String, String> describe(Object bean)
    返回指定的实体提供一个读方法的全部属性集。注:任何一个类都是Object的子类,在子类中存在getClass(),会被继承读方法,同时也会被作为集合的属性。

  实例:

    

 @Test
public void testDescribe()
{
Person bean = new Person();
bean.setId(1);
bean.setName("world");
try
{
Map<String, String> map = BeanUtils.describe(bean);
System.out.println("map: "+map);
} catch (IllegalAccessException e)
{
e.printStackTrace();
} catch (InvocationTargetException e)
{
e.printStackTrace();
} catch (NoSuchMethodException e)
{
e.printStackTrace();
}
}

  结果:
    map: {address=null, name=world, id=1, class="class" com.beanutil.px.Person}

  5.String getProperty(Object bean, String name)
    获取bean指定的属性值,内部采用内省的方式获取调用get方法
  6. populate(Object bean, Map<String, ? extends Object> properties)
    采用Map作为参数对bean进行设值。内部通过遍历Map调用setProperty(bean, name, value)设值
  String[] getArrayProperty(Object bean, String name)
    返回一个指定的数组属性,作为String[]返回
  String getIndexedProperty(Object bean, String name)
    返回bean中属性的索引值
  String getMappedProperty(Object bean, String name)
  String getMappedProperty(Object bean, String name, String key)

Apache-commons.BeanUtils浅析的更多相关文章

  1. Apache Commons BeanUtils

    http://commons.apache.org/proper/commons-beanutils/javadocs/v1.9.2/apidocs/org/apache/commons/beanut ...

  2. myeclipse的项目导入到eclipse下,com.sun.org.apache.commons.beanutils.BeanUtils不能导入

    com.sun.org.apache.commons.beanutils.BeanUtils这个包不能引入了怎么办自己下了个org.apache.commons的jar包了之后,改成import or ...

  3. 关闭log4j 输出 DEBUG org.apache.commons.beanutils.*

    2016-03-23 10:52:26,860 DEBUG org.apache.commons.beanutils.MethodUtils - Matching name=getEPort on c ...

  4. Apache Commons Beanutils对象属性批量复制(pseudo-singleton)

    Apache Commons Beanutils为开源软件,可在Apache官网http://commons.apache.org/proper/commons-beanutils/download_ ...

  5. org.apache.commons.beanutils.BeanMap简单使用例子

    一.org.apache.commons.beanutils.BeanMap; 将一个java bean允许通过map的api进行调用, 几个支持的操作接口: Object get(Object ke ...

  6. 对于Java Bean的类型转换问题()使用 org.apache.commons.beanutils.ConvertUtils)

    在进行与数据库的交互过程中,由数据库查询到的数据放在 map 中,由 map 到 JavaBean 的过程中可以使用 BeanUtils.populate(map,bean)来进行转换 这里要处理的问 ...

  7. Apache Commons Beanutils 三 (BeanUtils、ConvertUtils、CollectionUtils...)

    前言 前面已经学习了Apache Commons Beanutils包里的PropertyUtils和动态bean,接下来将学习剩下的几个工具类,个人觉得还是非常实用的,特别是CollectionUt ...

  8. Apache Commons Beanutils 二 (动态Bean - DynaBeans)

    相关背景 上一篇介绍了PropertyUtils的用法,PropertyUtils主要是在不修改bean结构的前提下,动态访问bean的属性: 但是有时候,我们会经常希望能够在不定义一个Java类的前 ...

  9. Apache Commons Beanutils 一 (使用PropertyUtils访问Bean属性)

    BeanUtils简要描述 beanutils,顾名思义,是java bean的一个工具类,可以帮助我们方便的读取(get)和设置(set)bean属性值.动态定义和访问bean属性: 细心的话,会发 ...

  10. org.springframework.beans.BeanUtils与org.apache.commons.beanutils.BeanUtils的copyProperties用法区别

    知识点 org.springframework.beans.BeanUtils与org.apache.commons.beanutils.BeanUtils都提供了copyProperties方法,作 ...

随机推荐

  1. Spring Cloud 入门 Consul-Client服务提供

    前面介绍了 Rureka Client服务提供, 只需要改pom.xml部分内容 1.pom.xml <?xml version="1.0" encoding="U ...

  2. 《JSON笔记之三》---postman中传入json串

    1.关于如何使用postman工具,简单的介绍一下, 用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的Firebug等 ...

  3. JQuery制作网页—— 第三章 JavaScript操作DOM对象

    1. DOM:Document Object Model(文档对象模型):          DOM操作:                   ●DOM是Document Object Model的缩 ...

  4. python--随笔一

    1.format函数--根据关键字和位置选择性插入数据 In [11]: '{mingzi}jintian{dongzuo}'.format(mingzi='duzi',dongzuo='i love ...

  5. php扩展开发-常量

    //常量在内核中的结构 typedef struct _zend_constant { zval value; int flags; char *name; uint name_len; int mo ...

  6. bash:/usr/bin/mogod/:connot execute binary:exec fotmat error

    前两天博主在安装mogodb的时候出现以下错误,很是郁闷,明明按照教程里面做的,怎么到最后 执行命令的时候出错了呢,以下为错误execute binary:exec fotmat error" ...

  7. PHP.34-TP框架商城应用实例-后台10-商品分类-需求分析、创建无限级商品分类,递归

    商品管理需求分析 1.实现商品无限级分类管理[类似京东三级分类] 2.添加商品时要指定商品属于一个主分类和多个扩展分类[扩展分类可以是其他主分类] 3.商品列表中可以根据分类搜索商品 a) 搜索一个分 ...

  8. python re模块实现计算器

    def mul_div(exp): #计算乘除 while True: ret = re.search('[\d\.]+[\*\/]-?[\d\.]+', exp) if ret: atom_exp ...

  9. HTML中body相关标签-02

    今日内容: 字体标签: h1~h6.<font>.<u>.<b>.<strong><em>.<sup>.<sub> ...

  10. java程序——随机数求和

    设计思路:用随机算法随机生成10个数(0~100),循环填充一个数组,然后在循环中显示数组内容,接着用一个循环计算数组元素的和,将结果也显示在消息框中. 流程图: 源代码: package test; ...