由于BeanUtils 的美名远播,加之学艺不精;项目中想当然直接使用BeanUtils;结果华丽丽的掉进了陷阱;
且看下面场景:
1、待copy类
public class SiteSupplierTrade { private Long longAttr; private String[] StringArrayAttr; private Integer integerAttr; private String StringAttr; //set get }
2、copy类
public class SiteSupplierTradeCopy { private Long longAttr; private String[] StringArrayAttr; private Integer integerAttr; private String StringAttr; // set get }
3、copy
public static void main(String[] args) { SiteSupplierTrade siteSupplierTrade = new SiteSupplierTrade(); if (null != siteSupplierTrade) { SiteSupplierTrade siteSupplierTrade2 = new SiteSupplierTrade(); SiteSupplierTradeCopy SiteSupplierTrade3 = new SiteSupplierTradeCopy(); try { BeanUtils.copyProperties(siteSupplierTrade2, siteSupplierTrade); BeanUtils.copyProperties(SiteSupplierTrade3, siteSupplierTrade); } catch (Exception e) { } System.out.println(siteSupplierTrade2); System.out.println(SiteSupplierTrade3); try { PropertyUtils.copyProperties(siteSupplierTrade2, siteSupplierTrade); PropertyUtils.copyProperties(SiteSupplierTrade3, siteSupplierTrade); } catch (Exception e) { } System.out.println(siteSupplierTrade2); System.out.println(SiteSupplierTrade3); } }
4、结果:
SiteSupplierTrade[longAttr=0,StringArrayAttr={},integerAttr=0,StringAttr=<null>]
SiteSupplierTradeCopy[longAttr=0,StringArrayAttr={},integerAttr=0,StringAttr=<null>]
SiteSupplierTrade[longAttr=<null>,StringArrayAttr=<null>,integerAttr=<null>,StringAttr=<null>]
SiteSupplierTradeCopy[longAttr=<null>,StringArrayAttr=<null>,integerAttr=<null>,StringAttr=<null>]
5、结论:
1)、熟悉BeanUtils PropertyUtils的知道,这两兄弟的区别就是BeanUtils 会做类型转换,PropertyUtils不会,自然前者性能不如后者;
2)、其实还有一个副作用,观察结果标红的部分,发现BeanUtils 会将long、integer 初始化为0,string[]初始化为空数组,而不是copy一个null;
3)、对于依赖为空判断的应用来说就是一个悲剧。
本站支持 pay for your wishes
相关推荐
BeanUtils 是 Apache commons组件的成员之一,主要用于简化JavaBean封装数据的操作。它可以给JavaBean封装一个字符串数据,也可以将一个表单提交的所有数据封装到JavaBean中。使用第三方工具,需要导入jar包:
赠送jar包:commons-beanutils-1.9.4.jar; 赠送原API文档:commons-beanutils-1.9.4-javadoc.jar; 赠送源代码:commons-beanutils-1.9.4-sources.jar; 赠送Maven依赖信息文件:commons-beanutils-1.9.4.pom; ...
BeanUtils工具由Apache软件基金组织编写,提供给我们使用,主要解决的问题是:把对象的属性数据封装到对象中。在整个J2EE的编程过程中,我们经常会从各种配置文件中读取相应的数据,需要明白的一点是从配置文件中...
赠送jar包:commons-beanutils-1.9.4.jar; 赠送原API文档:commons-beanutils-1.9.4-javadoc.jar; 赠送源代码:commons-beanutils-1.9.4-sources.jar; 赠送Maven依赖信息文件:commons-beanutils-1.9.4.pom; ...
commons-beanutils-1.8.0.jar beanutils.jar beanutils.jar工具包
BeanUtils工具是一种方便我们对JavaBean进行操作的工具,是Apache组织下的产品。beanUtils 可以便于对javaBean的属性、对象进行赋值,beanUtils可以将一个MAP集合的数据拷贝到一个javabean对象中。
BeanUtils教程BeanUtils教程BeanUtils教程BeanUtils教程BeanUtils教程BeanUtils教程
BeanUtils_1.8.3最新帮助文档,希望对给位有用。。。
commons-beanutils-1.8.0 jar包: 1.commons-beanutils-1.8.0.jar 2.commons-beanutils-1.8.0-javadoc.jar 3.commons-beanutils-1.8.0-sources.jar 4.commons-beanutils-bean-collections-1.8.0.jar 5.commons-...
BeanUtils的包BeanUtils的包BeanUtils的包BeanUtils的包BeanUtils的包BeanUtils的包BeanUtils的包BeanUtils的包BeanUtils的包
完美beanUtils 1.8 jar包与源码
Commons-beanutils jar包,比较新希望对大家能有帮助
此为BeanUtils的实例。其中apache的包有一个小的BUG已在其中说明。
BeanUtils用法
BeanUtils是由Apache公司开发的针对操作JavaBean的工具包。 对于JavaBean,简单的来说,就是要有一个空参的构造器和对属性的getXXX方法和setXXX方法。 在由JDK提供的默认的API中,有java.beans包,里面有诸如...
BeanUtils工具 .jar 包使用很简单 可以参考博客java学习笔记——javaweb之BeanUtils、EL、JSTL
本资料共包含以下附件: commons-beanutils-1.8.0.rar commons-beanutils-1.8.3.rar
赠送jar包:commons-beanutils-1.9.3.jar; 赠送原API文档:commons-beanutils-1.9.3-javadoc.jar; 赠送源代码:commons-beanutils-1.9.3-sources.jar; 包含翻译后的API文档:commons-beanutils-1.9.3-javadoc-...
BeanUtils的jar包
commons-beanutils-1.8.2-src官方源文件,是你学习beanutils工具的必备资料