在一般的写bean组件的时候,都必须要写setter和getter方法,当然假如我们事先已经知道bean的相关属性和方法,写bean是比较简单的,但是组件太多的时候,重复编写经常是枯燥乏味令人厌烦的。但当有些时候我么需要调用动态对象的属性的时候,我们应该怎么来设定和获取对象的属性呢?BeanUtils就可以帮助我们来简化解决这个问题。
目前最新的版本是1.9.
在日常的开发中,下面类似的代码应该是非常的眼熟。
DynaActionForm daf =(DynaActionForm)form ;
User user = new User() ;
user.setId( daf.getString("id" ) ) ;
user.setPassword( daf.getString( "password " ) ) ;
user.setUsername( daf.getString( "username") ) ;
…
类似的对象的各种属性的传递,在代码中非常常见,利用beanutils可以简化这些工作。
用beanutils的话,效果可以参考:
BeanUtils.copyProperties(user, daf ) ;
利用Apache commons beanutils复制对象的代码如下:
packagetest.ffm83.commons.beanutils;
import java.util.HashMap;
importorg.apache.commons.beanutils.BeanUtils;
/* 通过commons beanutils进行对象传递
* 注意:直接进行Bean之间的clone 复制后的2个Bean的同一个属性可能拥有同一个对象的ref,特别是对于属性为类的情况下。
* @author 范芳铭
* */
public class BeanutilsUsage {
public static void main( String[] args ) throws Exception{
EasyBean bean = new EasyBean();
bean.setName( "范芳铭" );
System.out.println("目标对象名称:" + BeanUtils.getProperty( bean,"name" ));
HashMap map = new HashMap();
map.put( "1","12120000" );
map.put( "2","12130000" );
BeanUtils.setProperty( bean,"telephone", map );
EasyBean dest = new EasyBean();
BeanUtils.copyProperties( dest, bean );
System.out.println("...目标复制后名称:" + BeanUtils.getProperty( dest,"name" ));
System.out.println("...目标复制后电话:" + BeanUtils.getProperty( dest,"telephone(1)" ));
}
}
运行后结果如下:
目标对象名称:范芳铭
...目标复制后名称:范芳铭
...目标复制后电话:12120000