`
月迷津渡
  • 浏览: 100613 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Apache开源项目之1[BeanUtils使用]

    博客分类:
  • Java
阅读更多
最近在研究struts框架的同时,顺便看了看beanutils开源项目,对BeanUtils的一些内容做了一些整理,与大家分享同时也帮助自己记忆。

主要涉及以下几点内容:

1.PropertyUtils的getProperties方法

2.如何创建动态bean对象

3.学会使用BeanUtils的copyProperties方法

好,那么我们先来看PropertiesUtils的getProperties方法

在PropertiesUtils获取属性的方法中提供了4种基本实现他们分别支持基本数据获取(简单式)、map数据获取(Map式)、数组内对象属性获取(索引式)、以及级联属性获取(嵌套式)。

但是由于getProperties本身对4中属性的获取方法都支持因此在此只列出getProperties的4种应用。

我们假设这样几个对象

Teacher teacher{String name,Student[] students,Address address,Map phone}

Students student{String name}

Address address{String lane, String no}

简单式:PropertiesUtils.getProperties(teacher,"name");

Map式:PropertiesUtils.getProperties(teacher,"phone(keyname)");

索引式:PropertiesUtils.getProperties(teacher,"students[index].name");

嵌套式:PropertiesUtils.getProperties(teacher,"address.lane");

其次,我们来看看如何创建动态的bean对象:

在beanutils包下动态bean主要分为2类,第一类是预定义的bean,还有一种是lazyload的bean。我们分别做介绍。

创建一个预定义bean的步骤如下:

1)构建DynaProperty: DynaProperty[] dp = new DynaProperty[]{

new DynaProperty("propertyName",String.class).....};

2)构建DynaClass: DynaClass newclass = new BasicDynaClass("beanName",null,dp);

3)构建DynaBean: DynaBean dbean = newclass.newInstance();

4)设置bean属性:dbean.set("propertyName",propertyValue);

创建一个lazyload的bean的步骤如下

1)实例化一个lazy load bean: DynaBean dbean = new LazyDynaBean();

2)设置bean属性: dbean.set("propertyName",propertyValue);

取值均在dbean内按照1中4种方式获取即可

最后我们来看看BeanUtils的copyProperties方法,这个也是大家讨论最多的。我把我的理解写出来与大家分享。如果有不正确的地方欢迎指正。

顾名思义,这是一个用于copy属性的方法。在BeanUtils中copy属性不仅会对同属性名且同类型的属性进行拷贝,并且会对同属性名,不同类型的属性进行转化。所以在copy的时候经常会出现类型不匹配的情况,当然apache对于有一些类型的转化做了默认的实现,举个简单的例子,如果一个String数组需要拷贝到String属性中去,apache做的默认实现是将String数组的地址做为一个字符串拷贝到String的属性中去。

那这些转化都是哪里做的呢,这就说到了这个方法的核心内容ConvertUtils工具类:下面介绍对于不同类型的拷贝,如何来自己做实现。

具体步骤如下:

1)创建一个用于处理的Convert自定义类,我们不妨定义一个类叫做MyConverter,这个类要求实现Converter接口,同时实现它的convert方法,该方法的返回值,就是你所希望得到的被设置到目标对象中的内容。

2)使用ConvertUtils.register(new MyConverter(),String.class);这里有几点需要说明,register方法会对原有apache的默认实现做覆盖,所以一般只对特殊类型做注册,另外方法的第2个参数是一个class类型,该类型是需要转成的标的类型,也就是说需要转成String类型的数据才会执行MyConverter。而之前在1)中重写的convert方法中有一个Class参数则是源数据的类型。这里需要注意的。

这样一来,copy就可以顺利的执行了。同样的你可能会想到有了注册方法是否会有unregister方法呢,答案是肯定的,他支持解开单个注册以及解开全部的注册。在struts1的框架的初始化过程中,就对所有的copy标的类型,做了解注册和自定义的实现。

希望以上内容能够对大家有所帮助,如有错误不吝指正。
分享到:
评论

相关推荐

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

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

    commons-beanutils-1.9.CHM

    commons-beanutil开源库是apache组织的一个基础的开源库。为apache中很多类提供工具方法。学习它是学习其它开源库实现的基础。 Commons-beanutil中包括大量和JavaBean操作有关的工具方法,使用它能够轻松利用Java...

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

    apache提供了一套开源的api BeanUtils组件,方便对javabean的操作。

    commons-beanutils-1.8.3.zip

    commons-beanutils-1.8.3。commons-beanutils是Apache开源组织提供的用于操作JAVA BEAN的工具包。使用commons-beanutils,我们可以很方便的对bean对象的属性进行操作。

    orgapache_commons

    org.apache.commons的jar包,Apache Commons包含了很多开源的工具。 包括commons-beanutils-1.8.0-bin、commons-betwixt-0.8、commons-cli-1.1、commons-codec-1.3、commons-collections-3.2.1-bin、commons-...

    commons-beanutils-1.8.0

    commons-beanutils是Apache开源组织提供的用于操作JAVA BEAN的工具包。使用commons-beanutils,我们可以很方便的对bean对象的属性进行操作

    commons-beanutils-1.9.4-src.tar.gz

    commons-beanutils.jar 免费下载 commons-beanutils 是 Apache 开源组织提供的用于操作 JAVA BEAN 的工具包。 使用 commons-beanutils,我们可以很方便的对 bean 对象的属性进行操作。

    commons-beanutils-1.9.0-src.zip

    commons-beanutils是Apache开源组织提供的用于操作JAVA BEAN的工具包。使用commons-beanutils,我们可以很方便的对bean对象的属性进行操作。

    OpenSource_Study:日积月累,开源框架学习(Thrift,Dubbo,Spring,Guava ...)-Open source

    1,Apache.commons 1.1,beanutils propertyUtils类副本与反射副本使用及效率比较。 1.2,收藏CollectionUtils从一个列表中查找符合一定条件的对象。 2,太阳 2.1,发送邮件javax.mail完成邮件的发送和接收。 3,...

    commons-logging-1.1.1.jar_jb51.rar

    commons-beanutils.jar 免费下载 commons-beanutils 是 Apache 开源组织提供的用于操作 JAVA BEAN 的工具包。 使用 commons-beanutils,我们可以很方便的对 bean 对象的属性进行操作。

    开源框架jar包(百度云盘)

     · jaf-1_1_1.zip  · hibernate-validator-5.0.0.CR2-dist.zip  · guice-1.0-src.zip  · guice-1.0.zip  · displaytag-1.2-bin.zip  · displaytag-1.2-src.zip  · cewolf-1.1.4.zip  · cewolf-1.0-...

    Java工具库BeanQuery.zip

    Bean Query 复用Apache Commons BeanUtils, Apache Commons Collections和Java Hamcrest 来简化对Bean(集合)的排序,过滤和转换。 文档 阅读 使用说明来学习怎么使用 BeanQueryExample.java用Junit...

    Java开发常用jar包

    1.commons-beanutils.jar:提供对Java反射和自省API的包装,主要提供了对于 JavaBean进行各种操作。提供了对于JavaBean进行各种操作,克隆对象,属性等等. 2.commons-digester.jar:方便地将XML文档所定义的元素转化为...

    封装对象工具类jar包.zip

    程序中对javabean的操作很频繁, 所以apache提供了一套开源的api,方便对javabean的操作!即BeanUtils组件

    javajre源码-checkstyle-backport-jre6:Checkstyle是用于检查Java源代码是否符合代码标准或一组验证规

    Commons项目()的Logging和Beanutils软件包。 这些软件包的许可条款位于此目录中名为“ LICENSE.apache20”的文件中。 该软件使用Google Guava库()。 这些软件包的许可条款位于此目录中名为“ LICENSE.apache20”...

    java开发常用jar包

    commons-beanutils.jar Apache Commons包中的一个,包含了一些Bean工具类类。必须使用的jar包。 commons-collections.jar Apache Commons包中的一个,包含了一些Apache开发的集合类,功能比java.util.*强大 commons...

    urban_transport_orel:城市交通系统。 公交,无轨电车或有轨电车已分配给该路线。 车辆必须按照特定的间隔或时间表行驶

    -Apache Commons BeanUtils为反射和自省提供了一个易于使用但灵活的包装器。 最流行HTML,CSS和JavaScript框架,用于在网络上开发响应式,移动优先项目。 网站的符号字体。 -JavaScript库。 大家都知

    Java Commons 包学习

    Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动。 包含的组件有BeanUtils、Codec、Collections、Lang、IO、FileUpLoad等等。本文档 帮助Java开发者学习相关内容

    MyEclipse_9创建SSH2开发环境必须的独立包

    commons-beanutils.jar 提供对java 反射和自省API的包装 commons-fileupload.jar 文件上传 commons-io.jar 输入输出,支持文件上传 commons-logging.jar 用于通用日志处理 commons-validator.jar 提供了一个简单的,...

Global site tag (gtag.js) - Google Analytics