我必须在应用程序中使用JavaBeans。
该应用程序是配置驱动的应用程序。根据配置,将需要不同的JavaBeans类。
一种选择是,根据配置,我使用代码生成器来生成JavaBean类。
听起来很吸引人的另一个选项是使用Apache Beanutils中的Dynamic Beans。它使我免于代码生成的另一步骤。
您能帮我一下,使用Dynabeans和Generated JavaBeans对性能和内存有什么影响。
除了DynaBeans,还有其他更好的选择吗?
在这两种情况下,我稍后都将使用Apache BeanUtils调用getter / setter。
最佳答案
我一直在研究BeanUtils
的BasicDynaBean
实现,并得出了以下与代码生成的JavaBean比较的结论。
记忆BasicDynaBean
使用HashMap
存储键/值。如果有1000个sme DynaBean实例,则会浪费大量内存,因为在每个实例中都再次存储了密钥。因此,代码生成JavaBean会消耗更多的内存,并且如果要在内存中存储大量Dynabean实例,则不建议这样做。
速度
要访问不同的字段,它将在get/put
上调用HashMap
方法。因此,它比代码生成的Java Bean更快,因为在那里我将不得不使用getter/setter
访问reflection
方法。