学科分类
目录
Java Web

什么是BeanUtils

大多数Java程序开发人员过去习惯于,创建JavaBean然后通过调用JavaBean属性对应的getXxx和setXxx方法来访问属性。但是,由于各种Java工具和框架层出不穷的出现,并不能保证属性对应的getXxx和setXxx方法总能被调用,因此动态访问Java对象的属性是必要的,尽管Java语言提供了反射和内省的API,但是这些API相当复杂且操作非常的繁琐。为此,Apache软件基金会提供了一套简单、易用的API——BeanUtils工具。

截止到目前BeanUtils的最新版本为Apache Commons BeanUtils 1.9.x,读者可以根据需要下载相应的版本。BeanUtils工具包的官网首页地址为http://commons.apache.org/proper/commons-beanutils,登入到官网首页后,点击左边菜单栏【BEANUTILS】—>【Download】选项,跳转到了BeanUtils的下载页面,如图1所示。

图8-1 BeanUtils下载页面

在图8-20中左键点击红框标识的链接就可以进行下载,解压下载后的文件便可获得BeanUtils开发所需的jar包。需要注意的是,BeanUtils工具包还需要一个logging包来配合使用,logging包中包装了各种日志API的实现,感兴趣的同学可以进入官网(http://commons.apache.org/proper/commons-logging)下载。

BeanUtils工具中封装了许多类,其中最核心的是org.apache.commons.beanutils包下的BeanUtils类,接下来,针对BeanUtils类的常用方法进行简单的介绍,具体如表1所示。

表1 BeanUtils类的常用方法

方法声明 功能描述
static String [getMappedProperty](E://BeanUtils/commons-beanutils-1.9.2/apidocs/org/apache/commons/beanutils/BeanUtils.html#getMappedProperty(java.lang.Object, java.lang.String))(Object bean, String name) 返回指定bean中指定索引属性的值,返回值类型为String类型。
static String [getMappedProperty](E://BeanUtils/commons-beanutils-1.9.2/apidocs/org/apache/commons/beanutils/BeanUtils.html#getMappedProperty(java.lang.Object, java.lang.String, java.lang.String))(Object bean, String name, String key) 返回指定bean中指定索引属性的值,返回值类型为String类型。
static String [getProperty](E://BeanUtils/commons-beanutils-1.9.2/apidocs/org/apache/commons/beanutils/BeanUtils.html#getProperty(java.lang.Object, java.lang.String))(Object bean, String name) 返回指定bean的指定属性的值,返回值类型为String类型。
static void [populate](E://BeanUtils/commons-beanutils-1.9.2/apidocs/org/apache/commons/beanutils/BeanUtils.html#populate(java.lang.Object, java.util.Map))(Object bean, Map<String,? extends Object> properties) 根据指定的名称/值对为相应的javabean属性设置值。
static void [setProperty](E://BeanUtils/commons-beanutils-1.9.2/apidocs/org/apache/commons/beanutils/BeanUtils.html#setProperty(java.lang.Object, java.lang.String, java.lang.Object))(Object bean, String name, Object value) 设置指定的属性值,传入的类型要求能转换成相应属性的类型。

表1中列举了BeanUtils类的常用方法及其功能的描述,掌握这些方法对灵活运用BeanUtils工具尤为重要。

为了让大家熟悉BeanUtils类的常用方法,接下来通过一个案例来演示使用setProperty()和getProperty()方法访问JavaBean的属性,具体如例1所示。

例1 BeanUtilsDemo.java

 1    package cn.itcast.chapter08.beanutils;
 2    import org.apache.commons.beanutils.BeanUtils;
 3    import cn.itcast.chapter08.javabean.Person;
 4    public class BeanUtilsDemo01 {
 5        public static void main(String[] args) throws Exception{
 6            Person p = new Person();
 7             //使用BeanUtils为属性赋值
 8            BeanUtils.setProperty(p, "name", "Jack");
 9            BeanUtils.setProperty(p, "age", 10);
 10             //使用BeanUtils获取属性值
 11            String name = BeanUtils.getProperty(p, "name");
 12            String age = BeanUtils.getProperty(p, "age");
 13            System.out.println("我的名字是"+name+",我今年"+age+"岁了!");
 14        }
 15    }

运行结果如图2所示。

图2 运行结果

例1实现了使用BeanUtils为JavaBean的属性先赋值然后再取值的功能,第8~9行代码使用setProperty()方法分别为name和age属性赋值为Jack和10,第11~12行代码使用getProperty()方法分别获取name和age属性的值,第13行代码打印出这些值。

点击此处
隐藏目录