我有一个问题,我需要遍历一个对象图并挑选出一个特定的属性值。我的原始解决方案缓存了一个链接的属性名称列表,需要应用这些属性名称才能从对象图中的A点到达B点。然后我使用apache commons PropertyUtils遍历调用getProperty(Object bean,String name)的链表,直到我到达B点。
我的问题是,与每个步骤的方法对象相比,这将是如何执行的。什么是propertyUtils在引擎盖下做什么?它是在做很多反思/繁重的工作吗?
答案 0 :(得分:1)
你不需要手动横向图,因为新版本的commons beanutils也支持像bean1.prop1.prop2这样的表达式。
关于性能如果你只对每个表达式执行一次,那么propertyutils实现就可以了,因为某种程度的反射是绝对必要的。
如果多次调用每个表达式,您可以进行更真实的性能提升。然后缓存最后执行的方法可以改善结果,因为你只进行一次大反射表达式。
如果多次使用该表达式,可以查看支持“编译表达式”的OGNL。