跳到导航
dev2dev.bea.com.cn
首页 资源中心 dev2dev学堂 在线技术论坛 专家Blog User Group CodeShare
dev2dev 首页 > 资源中心 > 专家Blog > 专家Blog文章
BeanUtils: 威力和代价

时间:2005-05-13
作者:Prakash Malani
浏览次数:
本文关键字:BeanUtilscopyproperty复制属性
文章工具
推荐给朋友 推荐给朋友
打印文章 打印文章
BeanUtils: 威力和代价

Apache Jakarta Commons项目非常有用。我曾在许多不同的项目上或直接或间接地使用各种流行的commons组件。其中的一个强大的组件就是BeanUtils。我将说明如何使用BeanUtils将local实体bean转换为对应的value 对象:


BeanUtils.copyProperties(aValue, aLocal)

上面的代码从aLocal对象复制属性到aValue对象。它相当简单!它不管local(或对应的value)对象有多少个属性,只管进行复制。我们假设local对象有100个属性。上面的代码使我们可以无需键入至少100行的冗长、容易出错和反复的get和set方法调用。这太棒了!太强大了!太有用了!

现在,还有一个坏消息:使用BeanUtils的成本惊人地昂贵!我做了一个简单的测试,BeanUtils所花费的时间要超过取数据、将其复制到对应的value对象(通过手动调用get和set方法),以及通过串行化将其返回到远程的客户机的时间总和。所以要小心使用这种威力!

  • 如果您有BeanUtils和类似的实用程序方面的体验,请与我交流分享。
    +prakash

评论

  • 是的,我确实是以循环方式执行测试的。所得的结果是循环的平均值。非常欢迎发表其他的建议和评论。+prakash

发表人:pmalani,2005年5月18日,03:58 PM

  • 在进行静态映射时,BeanUtils缓存了所有从java.beans.Introspector获得的PropertyDescriptor对象。因此,对于特定的类,初次调用BeanUtils时反射会开销很大。但是其后的调用,开销就小多了。您的性能测试应该是以循环方式执行,然后计算平均所花的时间,而没有把初次调用考虑在内,随后您会看到性能的提升的。

Struts使用copyProperties()来将请求的参数复制到对应的FormBean。其性能相当不错。

发表人:tom.drake@tavant.com,2005年5月18日,02:19 PM

原文出处:http://dev2dev.bea.com/blog/pmalani/archive/2005/05/beanutils_the_p_1.html

dot dot dot

dot
  作者其它文章
您对本文的评价
您对这篇文章的看法如何?
太棒了!5分 不错啊 4分 一般般 3分 有待提高 2分 不好 1分

   
相关技术