java:BeanUtils使用简介

1. 简介

  Apache Common BeanUtil是一个常用的在对象之间复制数据的工具类,著名的web开发框架struts就是依赖于它进行ActionForm的创建。   BeanUtil最常用的类是org.apache.commons.beanutils.BeanUtils。   commons-beanutils是Apache组织下的一个基础的开源库,它提供了对Java反射和内省的API的包装,依赖内省,其主要目的是利用反射机制对JavaBean的属性进行处理。我们知道一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致了大量的get/set代码堆积,增加了代码长度和阅读代码的难度,现在有了BeanUtils,我们对JavaBean属性的处理就方便很多。

2. 常用方法

    public void copyProperties(java.lang.Object dest, java.lang.Object orig) 把orig中的值copy到dest中; public java.util.Map describe(java.lang.Object bean)把Bean的属性值放入到一个Map里面。 public void populate(java.lang.Object bean, java.util.Map properties)把properties里面的值放入bean中。 public void setProperty(java.lang.Object bean, java.lang.String name,java.lang.Object value)设置Bean对象的名称为name的property的值为value. public String getProperty(java.lang.Object bean, java.lang.String name)取得bean对象中名为name的属性的值。

3. 示例

    同类之间不同对象要求进行数据复制。
User user1 = …;
User user2 = …;
BeanUtils. copyProperties(user2,user1);
    不同类不同对象之间的数据复制。
UserForm userForm = …;
User user = …;
BeanUtils. copyProperties(user, userForm);
    对象数据和Map之间互相转化。
User user = …;
Map userMap = BeanUtils.describe(user);
Map userMap = …;
User user = …;
BeanUtils.populate(user,userMap);

备注:Map可以看成一个动态数据容器,作为VO(值对象)很适合在不同层之间传播数据,作为PO(持久化对象)也可以动态存储字段信息,合理运用可以减少程序很多修改和维护工作。所以让bean和map之间方便的进行数据填充,非常必要。

4. 拓展

    PO:persistent object 持久对象。 POJO :plain ordinary java object 无规则简单java对象。 BO:business object 业务对象。 VO:value object 值对象 / view object 表现层对象。 DTO(TO):Data Transfer Object 数据传输对象。 DAO:data access object数据访问对象

参考:

经验分享 程序员 微信小程序 职场和发展