Apache commons beanutils简介和使用

在一般的写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

时间: 2024-10-14 05:37:45

Apache commons beanutils简介和使用的相关文章

Apache Commons Beanutils 三 (BeanUtils、ConvertUtils、CollectionUtils...)

前言 前面已经学习了Apache Commons Beanutils包里的PropertyUtils和动态bean,接下来将学习剩下的几个工具类,个人觉得还是非常实用的,特别是CollectionUtils: BeanUtils 简单介绍下两个方法的使用,populate和copyProperties, populate可以帮助我们把Map里的键值对值拷贝到bean的属性值中: copyProperties,顾名思义,帮我们拷贝一个bean的属性到另外一个bean中,注意是浅拷贝 如下示例: /

Apache Commons Beanutils 二 (动态Bean - DynaBeans)

相关背景 上一篇介绍了PropertyUtils的用法,PropertyUtils主要是在不修改bean结构的前提下,动态访问bean的属性: 但是有时候,我们会经常希望能够在不定义一个Java类的前提下,动态决定这个类中包含哪些属性,并动态访问它们的属性值,比较典型的使用场景是作为SQL查询的结果集的bean: 为了支持以上特性,Apache Commons Beanutils包为我们提供了DynaBean接口.DynaClass接口: 举个简单例子如下: DynaProperty[] pro

Apache Commons Beanutils教程一(访问Bean属性)

BeanUtils简要描述 beanutils,顾名思义,是java bean的一个工具类,可以帮助我们方便的读取(get)和设置(set)bean属性值.动态定义和访问bean属性: 细心的话,会发现其实JDK已经提供了一个java.beans包,同样可以实现以上功能,只不过使用起来比较麻烦,所以诞生了apache commons beanutils: 看源码就知道,其实apache commons beanutils就是基于jdk的java.beans包实现的. Java Bean 在介绍a

myeclipse的项目导入到eclipse下,com.sun.org.apache.commons.beanutils.BeanUtils不能导入

com.sun.org.apache.commons.beanutils.BeanUtils这个包不能引入了怎么办自己下了个org.apache.commons的jar包了之后,改成import org.apache.commons.beanutils.BeanUtils 编译能通过了.但是用到beanutils的时候会报错,java.lang.reflect.InvocationTargetException java.lang.NoClassDefFoundError: org/apache

Apache Commons IO简介

虽然Google的guava对Java的IO操作进行了一定封装,但是它更偏向于集合.并发和缓存,在实际项目中,我非常喜欢guava,同时我也非常喜欢Apache的一个工具包org.apache.commons.io,这两个工具包提供非常强大的工具能力,能够简化代码逻辑,提高开发效率和质量,是每个Java程序员都应该掌握的工具包.此文简单介绍一下org.apache.commons.io,详细的可参考其API注,此文绝大部分内容翻译自http://www.javacodegeeks.com/201

Apache Commons CLI 简介

CLI 命令代码实现 命令行程序处理流程相对比较简单,主要流程为设定命令行参数 -> 解析输入参数 -> 使用输入的数据进行逻辑处理CLI 定义阶段 每一条命令行都必须定义一组参数,它们被用来定义应用程序的接口.Apache Commons CLI 使用 Options 这个类来定义和设置参数,它是所有 Option 实例的容器.在 CLI 中,目前有两种方式来创建 Options,一种是通过构造函数,这是最普通也是最为大家所熟知的一种方式:另外一种方法是通过 Options 中定义的工厂方式

Apache Commons logging简介和使用

本章节内容主要来自网络和整理. Apache Commons Logging,又叫做JakartaCommons Logging (JCL),他提供的是一个日志(Log)接口(interface),同时兼顾轻量级和不依赖于具体的日志实现工具.它提供给中间件/日志工具开发者一个简单的日志操作抽象,允许程序开发人员使用不同的具体日志实现工具.用户被假定已熟悉某种日志实现工具的更高级别的细节.JCL提供的接口,对其它一些日志工具,包括Log4J, Avalon LogKit, and JDK等,进行了

Apache Commons pool 简介和pool连接池代码

在实际中工作,我们经常遇到需要连接池的地方,特别是数据库连接池. 我们为什么需要池呢?因为这些资源的创建,都很消耗资源.因此,我们使用一个对象池,里面预先创建了一些资源对象.当我们需要时,从池中取出对象,而不需要时,把对象返回池中.这样就可以提高代码运行的效率. Apache Commons Pool(http://commons.apache.org/pool/)为我们提供了很方便的接口来实现对象池.我们唯一需要实现的就是如何产生对象,而不用去考虑一堆多线程问题. 2013年,Apache C

Apache commons Proxy简介和动态代理、动态拦截器实现

Apache Commons Proxy 是Apache 的一个之项目,封装了 Java 对象代理的一些常用方法.又叫做 动态代理. 动态代理的作用非常大,在很多底层框架中都会用得到,比如struts,Spring等都用到了动态代理,它的原理很简单,就是将你要使用的类,重新生成一个子类或本类,这样框架就可以利用这个新生成的类做一些事情,比如在该类的方法前后加一些代码. 设想一下,不用修改任何已经编写好的代码,只要使用动态代理就可以灵活的加入一些东西,将来要是不喜欢了,不用也不会影响原来的代码.