commons beanutils之复制Bean属性
问题
你有两个相同类型的bean的实例,并需要将其中一个bean的属性复制到另一个中去.
解决方案
使用PropertyUtils.copyProperties()方法从一个bean复制属性到另一个bean.其中第一个参数
指定目的bean,而第二个参数是源bean:
Book book = new Book();
book.setName("Prelude to Poundation");
book.setAuthorName("Asimov");
Book destinationBook = new Book();
PropertyUtils.copyProperties(destinationBook,book);
PropertyUtils.copyProperties()方法从源bean实例中检索出所有属性的值,然后将
这些值赋给目的的实例中的相应属性.如果上面的示例中Book bean含有一个Author类型
的author属性,copyProperties()将把相同的引用对象赋给目的bean.换句话说,该方法
没有克隆bean属性的值.如例:
Author author = new Author();
author.setName("Zinsser");
Book book = new Book();
book.setName("On Writing well");
book.setAuthor(author);
Book destinationBook = new Book();
PropertyUtils.copyProperties(destionationBook,book);
if(book.getAuthor() == destinationBook.getAuthor()){
System.out.println("Author objects identical");
}
现在,两个对象中的author属性值都是Author类同一实例的引用.copyProperyties()并没
有复制bean属性的值.
copyProperties()方法还可以将一个Map的内容复制进bean中,前提是Map各键一一对应于目的
bean的各简单属性:
Map mapOrops = HashMap();
mapProps.put("name","The Art of computer rogramming");
mapProps.put("author","Knuth");
Book destinationBook = new Book();
PropertyUtils.copyProperties(destinationBook,mapProps);