我有一个问题,我需要遍历对象图并挑选出特定的属性值。我的原始解决方案缓存了属性名称的链接列表,这些属性名称需要应用才能从对象图中的A点到达B点。然后,我使用apache commons PropertyUtils遍历调用getProperty(Object bean,String name)的链接列表,直到到达B点为止。

我的问题是,与可能为每个步骤处理Method对象相比,此方法将如何执行。在阀盖下,propertyUtils在做什么?它会产生很多反射/沉重负担吗?

最佳答案

您不需要手动横切图,因为新版本的commons beanutils也支持像bean1.prop1.prop2这样的表达式。

关于性能,如果每个表达式只执行一次,则propertyutils实现很好,因为一定程度的反思是绝对必要的。

如果每个表达式都被调用多次,则可以提高性能。然后缓存最终执行的方法可以改善结果,因为您只需为表达进行一次大的反射。

如果您多次使用该表达式,则可以看看支持“编译表达式”的OGNL。

10-04 10:47