dev2dev 首页 > 资源中心 > 专家Blog > 专家Blog文章
BeanUtils: 威力和代价
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
作者其它文章
|