我必须在应用程序中使用JavaBeans。


该应用程序是配置驱动的应用程序。根据配置,将需要不同的JavaBeans类。
一种选择是,根据配置,我使用代码生成器来生成JavaBean类。
听起来很吸引人的另一个选项是使用Apache Beanutils中的Dynamic Beans。它使我免于代码生成的另一步骤。


您能帮我一下,使用Dynabeans和Generated JavaBeans对性能和内存有什么影响。
除了DynaBeans,还有其他更好的选择吗?

在这两种情况下,我稍后都将使用Apache BeanUtils调用getter / setter。

最佳答案

我一直在研究BeanUtilsBasicDynaBean实现,并得出了以下与代码生成的JavaBean比较的结论。

记忆


BasicDynaBean使用HashMap存储键/值。如果有1000个sme DynaBean实例,则会浪费大量内存,因为在每个实例中都再次存储了密钥。因此,代码生成JavaBean会消耗更多的内存,并且如果要在内存中存储大量Dynabean实例,则不建议这样做。


速度


要访问不同的字段,它将在get/put上调用HashMap方法。因此,它比代码生成的Java Bean更快,因为在那里我将不得不使用getter/setter访问reflection方法。

10-04 17:43