第三方库,了解了才能用——beanutils

最近在写一个从map转换成对应javabean的模块,本想用apache的beanutils库方便的进行bean field的读取和保存,结果发现,还是有很多功能不能满足需要的。

首先是beanutils写入field的时候,是通过setter方法的,如果没有找到setter方法就会直接抛出异常,而不是通过java的反射直接去写入field。在最终调试过程中,遇到了一个奇怪的javabean,它的setter方法,在保存field的值之后,返回bean的this引用。因为这个问题,在调试过程中发现一些字段总是无法写入。
其次,就是cloneBean方法,也是通过它的propertyUtils类进行field对拷的。由于java的特性,这个方法只能对javabean进行浅拷贝,所有为复杂类型的field,都只能获得原有bean的引用,无法直接进行修改。
因为上述两个问题,导致我需要的功能无法实现:首先是对map中定义的key,反射的保存到javabean的field中。这部分,只能自己改写成直接通过反射找到对应bean的field,直接进行读写操作,跳过getter和setter方法。对于浅拷贝,也没有很好的办法,只能先对所有字段进行一次浅拷贝,对于需要修改的字段,在修改之前再进行一次浅拷贝。这样还能够节省一部分内存。

One Reply to “第三方库,了解了才能用——beanutils”

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据