java – BeanUtils与ReflectionToStringBuilder的性能(用于Bean类)

我的Web应用程序中有大量的Java bean类,我试图找到一种在这些bean中实现toString()方法的简单方法. toString()方法将用于整个应用程序的日志记录,并应打印bean中所有属性的属性值对.

我正在尝试两种选择:
1. BeanUtils.describe()(Apache commons-beanutils)
2. ReflectionToStringBuilder.toString()(Apache commons-lang)

由于这是一个预计会有高流量的Web应用程序,因此实现必须是轻量级的,不应影响性能. (内存使用,处理器使用等是主要考虑因素).

我想根据上面提到的标准知道哪些更好.据我所知,反射是一项繁重的操作,但更多细节和对这两种选项的深入了解将有助于我选择最佳解决方案.

我们在对象的toString()方法中使用ToStringBuilder.reflectionToString().我们在生产环境中没有遇到任何问题.当然,我们很少使用toString()方法.

我们还使用BeanUtils.describe(),但用于其他目的. BeanUtils使用PropertyUtilsBean,它保留了已执行内省的bean的内部缓存.看起来这会给它带来性能优势,但是在reflectionToString源代码中有点蠢蠢欲动,似乎因为它最终依赖于java.lang.Class的实现,所以缓存也在那里发挥作用.

要么看起来是可行的选择,但BeanUtils.describe()将返回属性Map,其中reflectionToString将返回格式化的String.我想这取决于你想要对输出做什么.

我建议如果你的应用程序严重依赖于在对象上调用toString(),那么具有特定的实现可能会更有益.

翻译自:https://stackoverflow.com/questions/5656843/performance-of-beanutils-vs-reflectiontostringbuilder-for-use-in-bean-classes

转载注明原文:java – BeanUtils与ReflectionToStringBuilder的性能(用于Bean类)