`
thaIm
  • 浏览: 91596 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Commons BeanUtils

阅读更多
一)此包的下载
    http://commons.apache.org/beanutils/download_beanutils.cgi  此包目前最新的版本是1.8.3

二)此包的功能
    用于处理JavaBeans。它利用Java的反射机制,从动态的生成对bean的getter和setter的调用代码,到模拟创建一个动态的bean,等等。这个包看似简单,却是很多开源项目的基石:如在著名的Struts和Spring Framework中,我们都能找到BeanUtils的影子。

三)此包的API
    http://commons.apache.org/beanutils/v1.8.3/apidocs/index.html

    从 1.7.0 版本开始 BeanUtils被细分成3种架包:
    commons-beanutils.jar - 包含所有BeanUtils内容的架包
    commons-beanutils-core.jar - 除去Collections内容的架包
    commons-beanutils-bean-collections.jar - 仅有Collections内容的架包(此部分内容依赖于Commons Collections )

四)常用类:
    DynaBean -- 该接口定义的是一个动态的JavaBean,它的属性类型、名称和值都是可以动态改变的。
    DynaClass -- 该接口定义的是针对实现了DynaBean接口的类的java.lang.Class对象,提供如getName()、newInstance()等方法。
    DynaProperty -- 用于描述DynaBean的属性

五)代码样例
 /** Address.java */
package sean.study.commons.beanutils;
 
public class Address {
    private String zipCode;
    private String addr;
    private String city;
    private String country;
 
    public Address() {}
    public Address(String zipCode, String addr, String city, String country) {
        this.zipCode = zipCode;
        this.addr = addr;
        this.city = city;
        this.country = country;
    }
    public String getAddr() {
        return addr;
    }
    public void setAddr(String addr) {
        this.addr = addr;
    }
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
    public String getCountry() {
        return country;
    }
    public void setCountry(String country) {
        this.country = country;
    }
    public String getZipCode() {
        return zipCode;
    }
    public void setZipCode(String zipCode) {
        this.zipCode = zipCode;
    }
 
}
 
/** Customer.java */
package sean.study.commons.beanutils;
 
public class Customer {
    private long id;
    private String name;
    private Address[] addresses;
 
    public Customer() {}
    public Customer(long id, String name, Address[] addresses) {
        this.id = id;
        this.name = name;
        this.addresses = addresses;
    }
    public Address[] getAddresses() {
        return addresses;
    }
    public void setAddresses(Address[] addresses) {
        this.addresses = addresses;
    }
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}



我们来看看通常我们是怎样利用Commons BeanUtils来完成一些基本的JavaBean和DynaBean操作:
package sean.study.commons.beanutils;
 
import org.apache.commons.beanutils.BasicDynaBean;
import org.apache.commons.beanutils.BasicDynaClass;
import org.apache.commons.beanutils.DynaBean;
import org.apache.commons.beanutils.DynaProperty;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.lang.StringUtils;
 
public class BeanUtilsUsage {
 
    public static void main(String[] args) throws Exception {
        demoNormalJavaBeans();
        demoDynaBeans();
    }
 
    public static void demoNormalJavaBeans() throws Exception {
 
        System.out.println(StringUtils.center(" demoNormalJavaBeans ", 40, "="));
       
        // data setup
        Address addr1 = new Address("CA1234", "xxx", "Los Angeles", "USA");
        Address addr2 = new Address("100000", "xxx", "Beijing", "China");
        Address[] addrs = new Address[2];
        addrs[0] = addr1;
        addrs[1] = addr2;
        Customer cust = new Customer(123, "John Smith", addrs);
       
        // accessing the city of first address
        String cityPattern = "addresses[0].city";
        String name = (String) PropertyUtils.getSimpleProperty(cust, "name");
        String city = (String) PropertyUtils.getProperty(cust, cityPattern);
        Object[] rawOutput1 = new Object[] { "The city of customer ", name,
                "'s first address is ", city, "." };
        System.out.println(StringUtils.join(rawOutput1));
       
        // setting the zipcode of customer's second address
        String zipPattern = "addresses[1].zipCode";
        if (PropertyUtils.isWriteable(cust, zipPattern)) {//PropertyUtils
            System.out.println("Setting zipcode ...");
            PropertyUtils.setProperty(cust, zipPattern, "200000");//PropertyUtils
        }
        String zip = (String) PropertyUtils.getProperty(cust, zipPattern);//PropertyUtils
        Object[] rawOutput2 = new Object[] { "The zipcode of customer ", name,
                "'s second address is now ", zip, "." };
        System.out.println(StringUtils.join(rawOutput2));
       
        System.out.println();
    }
 
    public static void demoDynaBeans() throws Exception {
 
        System.out.println(StringUtils.center(" demoDynaBeans ", 40, "="));
       
        // creating a DynaBean
        DynaProperty[] dynaBeanProperties = new DynaProperty[] {//DynaProperty
                new DynaProperty("name", String.class),
                new DynaProperty("inPrice", Double.class), 
                new DynaProperty("outPrice", Double.class),
        };
        BasicDynaClass cargoClass = new BasicDynaClass("Cargo", BasicDynaBean.class, dynaBeanProperties); //BasicDynaClass  BasicDynaBean
        DynaBean cargo = cargoClass.newInstance();//DynaBean
       
        // accessing a DynaBean
        cargo.set("name", "Instant Noodles");
        cargo.set("inPrice", new Double(21.3));
        cargo.set("outPrice", new Double(23.8));
        System.out.println("name: " + cargo.get("name"));
        System.out.println("inPrice: " + cargo.get("inPrice"));
        System.out.println("outPrice: " + cargo.get("outPrice"));
 
        System.out.println();
    }
}


上述代码运行结果如下:

========= demoNormalJavaBeans ==========
The city of customer John Smith's first address is Los Angeles.
Setting zipcode ...
The zipcode of customer John Smith's second address is now 200000.

============ demoDynaBeans =============
name: Instant Noodles
inPrice: 21.3
outPrice: 23.8
分享到:
评论

相关推荐

    commons-beanutils-1.9.2下载

    Apache Commons BeanUtils是Java开发中的一个实用工具库,它提供了对JavaBeans进行操作的便捷方法。这个库的主要目的是简化对对象属性的访问,使得开发者能够更高效地处理对象的属性设置和获取,而无需手动编写大量...

    commons-beanutils, Apache Commons Beanutils的镜像.zip

    commons-beanutils, Apache Commons Beanutils的镜像 Apache Commons BeanUtils Apache Commons BeanUtils提供了一个 easy-to-use,但它围绕反射。文档更多信息可以在公共BeanUtils主页上找到。 可以浏览 JavaDoc插

    commons-beanutils:Apache Commons Beanutils

    Apache Commons BeanUtils Apache Commons BeanUtils为反射和自省提供了一个易于使用但灵活的包装器。文献资料可以在上找到更多信息。 可以浏览 。 与Apache Commons BeanUtils的用法有关的问题应张贴到。在哪里可以...

    commons-beanutils-1.9.4-API文档-中文版.zip

    赠送jar包:commons-beanutils-1.9.4.jar; 赠送原API文档:commons-beanutils-1.9.4-javadoc.jar; 赠送源代码:commons-beanutils-1.9.4-sources.jar; 赠送Maven依赖信息文件:commons-beanutils-1.9.4.pom; ...

    Commons beanutils API.chm

    Commons beanutils API.chm apache Commons beanutils API

    commons-beanutils-1.9.2包含全部jar包源码及API文档

    Commons BeanUtils Most Java developers are used to creating Java classes that conform to the JavaBeans naming patterns for property getters and setters. It is natural to then access these methods ...

    Commons BeanUtils 1.8.3 API

    Apache Commons BeanUtils 1.8.3 是一个强大的Java库,专为简化Java Bean操作而设计。这个API提供了大量的实用工具方法,使得开发者能够更加便捷地处理Java对象,特别是那些符合Java Bean规范的对象。在Java编程中,...

    commons-beanutils-1.8.3

    《Apache Commons BeanUtils 1.8.3:深入解析与应用》 Apache Commons BeanUtils是Apache软件基金会开发的一个Java库,它提供了一种方便、灵活的方式来操作JavaBeans。在这个特定的压缩包“commons-beanutils-1.8.3...

    commons-beanutils-1.9.4

    Apache Commons BeanUtils是Java开发中一个非常重要的工具库,它为开发者提供了大量便捷的JavaBean操作功能。在本文中,我们将深入探讨`commons-beanutils-1.9.4`这个版本,了解其核心功能、使用场景以及如何在项目...

    org.apache.commons.beanutils.jar

    《Apache Commons BeanUtils详解》 Apache Commons BeanUtils是Apache软件基金会的一个开源项目,它提供了一组实用工具类,用于简化JavaBean对象的操作。这个库的核心是`org.apache.commons.beanutils`包,其中包含...

    commons-beanutils-1.9.4-API文档-中英对照版.zip

    赠送jar包:commons-beanutils-1.9.4.jar; 赠送原API文档:commons-beanutils-1.9.4-javadoc.jar; 赠送源代码:commons-beanutils-1.9.4-sources.jar; 赠送Maven依赖信息文件:commons-beanutils-1.9.4.pom; ...

    commons-beanutils-1.8.3和commons-beanutils-1.8.0

    Apache Commons BeanUtils是Java开发中的一个实用工具库,主要用于处理JavaBeans对象,简化对JavaBean属性的操作。这个库提供了一套方便的API,使得开发者可以通过简单的API调用来获取、设置JavaBean的属性,甚至...

    commons-beanutils 源码

    《深入解析Apache Commons BeanUtils源码》 Apache Commons BeanUtils是Java开发中广泛使用的工具库,主要用于处理JavaBean对象的属性操作。这个库的核心功能在于简化了JavaBean对象的属性设置、获取以及复制等操作...

    Commons BeanUtils包说明

    Apache Commons BeanUtils是Java开发中一个非常实用的工具包,它简化了对象属性之间的操作,提供了大量的静态方法来处理Bean对象。这个包的核心思想是基于JavaBeans规范,即具有getter和setter方法的对象,使得...

    commons-beanutils-1.9.3jar包source包及相关jar包

    Apache Commons BeanUtils是Java开发中的一个非常重要的工具库,它为开发者提供了便利的方式来操作JavaBeans。这个库的主要目标是简化JavaBean属性的访问,通过提供一套简单易用的API,使得开发者无需直接调用getter...

    commons-beanutils-1.8.3.jar.zip

    《深入解析Apache Commons BeanUtils库》 Apache Commons BeanUtils库是Java开发中广泛使用的工具集,主要用于处理JavaBean对象的属性操作。这个库提供了一系列简便的方法,使得开发者能够轻松地进行对象属性的读取...

    commons-beanutils-1.9.4.jar.zip

    Apache Commons BeanUtils是Java开发中的一个实用库,它提供了对JavaBeans属性的简便操作。这个库简化了在对象之间复制属性、处理集合以及调用JavaBean方法的过程。在这个"commons-beanutils-1.9.4.jar.zip"压缩包中...

    commons-beanutils-1.9.3.jar

    Apache Commons BeanUtils是Java开发中的一个实用工具库,主要用于简化对JavaBean的操作。这个`commons-beanutils-1.9.3.jar`文件是该库的一个版本,它提供了丰富的API来帮助开发者更方便地处理JavaBean对象。在这个...

    commons-beanutils所有版本(1.0-1.9.2).zip

    Apache Commons BeanUtils是Java开发中的一个实用工具库,它提供了对JavaBeans属性操作的强大功能,极大地简化了在Java代码中处理对象属性的工作。这个压缩包文件"commons-beanutils所有版本(1.0-1.9.2).zip"包含了...

    commons-beanutils-1.8.0.zip

    Apache Commons BeanUtils是一个Java开发库,它为处理JavaBean对象提供了便利的功能。这个库的核心目标是简化对JavaBean属性的访问,使得开发者可以更轻松地读取和设置bean的属性,而无需直接编写大量的getter和...

Global site tag (gtag.js) - Google Analytics