关于BeanUtils.copyProperties的使用

spring和apache commons-beanutils中分别存在一个BeanUtils,提供了对java bean的常用操作。

之前在写程序时,用到了两个不同类型但属性基本相同的对象的拷贝,结果在拷贝java.util.Date类型的对象属性时,由于其值为null,而抛异常。

由于时间紧急,所以临时改成了get/set方式,幸亏对象的属性不算多。

后来一直耿耿于怀这个问题,今天抽空看了一下spring和apache commons-beanutils包中BeanUtils.copyProperties的实现。

spring中实现的方式很简单,就是对两个对象中相同名字的属性进行简单get/set,仅检查属性的可访问性。

而commons-beanutils则施加了很多的检验,包括类型的转换,甚至于还会检验对象所属的类的可访问性。

而且,commons-beanutils中的装换是不支持java.util.Date的。除了支持基本类型以及基本类型的数组之外,还支持java.sql.Date, java.sql.Time, java.sql.TimeStamp,  java.io.File,  javaio.URL这些类的对象,其余一概不支持。不过你可以自定义你的类的Converter。然后注册进去。

感觉commons-beanutils包中的这个BeanUtils类的copyProperties方法,太过复杂,约束太多,而且使用不便,虽然可扩展性好了,但是易用性不高。

总结:

关于bean复制,如果属性较少,建议直接写个方法完成get/set即可。如果属性较多,可以自己采用反射实现一个满足自己需要的工具类,或者使用spring的那个beanutils类,不建议使用commons-beanutils包中的那个BeanUtils类,刚看了下,这个类对于内部静态类的对象复制也会出现问题,检验太复杂了,常会出现一些诡异的问题。毕竟我们bean复制一般就是简单的属性copy而已。

而且,由于这些BeanUtils类都是采用反射机制实现的,对程序的效率也会有影响。因此,慎用BeanUtils.copyProperties!!!

分类: 技术点滴
绿色通道: 好文要顶 关注我 收藏该文与我联系 

gshine
关注 - 3
粉丝 - 13

+加关注

0
0
(请您对文章做出评价)

« 上一篇:Java Annotation

转载于:https://www.cnblogs.com/wangduqiang/p/4181012.html

2014年06月30日相关推荐

  1. 2005年06月30日 启功先生逝世 [前段时间上网不方便,今天才知道]

    我国著名国学大师.书画大师启功先生逝世   2005年06月30日11:49 [字号 大 中 小][留言][论坛][打印][关闭] 我国著名国学大师.书画大师,北京师范大学教授启功先生因病于30日凌晨 ...

  2. 互联网晚报 | 06月30日 星期四 |​ 开课吧回应停缴员工社保;苹果5G基带芯片研发失败;上海应届硕士毕业生可直接落户...

    郭明錤:苹果iPhone 5G基带芯片研发失败,高通仍将是独家供应 天风国际分析师郭明錤在社交平台上表示,最新调查表明,苹果的iPhone 5G基带芯片研发可能已经失败,因此,高通将继续成为2023年 ...

  3. 2014年12月30日,31日,2015年1月3日,4日

    这四天时间,整理地面滤波文献,给国内老师写了10-12月的学习情况进展汇报.元旦休息了两天. 明天5日新学期开始,加油!

  4. 2014年5月30日

    http://www.cnblogs.com/v-July-v/archive/2011/02/20/1983676.html 离散傅里叶变换   离散傅里叶变换(DFT),是连续傅里叶变换在时域和频 ...

  5. 2014年10月30日 1、完成AHC合并部分,调试通过代码

    1.完成AHC合并部分,调试通过代码 2.看C++课件 3.学习Python 4.学习算法 5.学习数据结构 6.计划明天任务 来自为知笔记(Wiz) 转载于:https://www.cnblogs. ...

  6. 2014年9月23日Xbox One引领中国次世代游戏新体验

     微软和百视通携手包括完美世界.腾讯.Ubisoft 等在内的 25 家游戏开发商计划推出 70 余款 Xbox One 游戏,引爆中国游戏市场 中国上海,2014 年 7 月 30 日--今天, ...

  7. 梦想世界2014年5月29日服务器维护公告,2021年4月30日游戏更新公告

    2021年4月30日游戏更新公告 关键字: 发布时间:2021-04-30 本周重点更新内容: 1.劳动节活动 2.日常奖励回溯找回功能开启 3.副本商店调整 此外还对外观赠送,套装等内容进行了调整. ...

  8. 电脑软件故障排除2014年2月16日

    电脑软件故障排除2014年2月16日 故障现象:某工作软件无法打开专用文档. 故障排除过程:尝试打开专用文档时提示" .Net ....."出错,于是从微软公司的网站下载最新版  ...

  9. 公布13年年报的股票中,个人进入前十大流通股东的股东一览。 截止2014年03月13日

    公布13年年报的股票中,个人进入前十大流通股东的股东一览. 截止2014年03月13日: 蒋仕波                           82.36     0.38%      新进   ...

最新文章

  1. CHUCK手把手带你搞定OPENSTACK
  2. 两路语音 两路计算机数据综合,脉冲编码调制解调实验摘要.doc
  3. java备忘录_Java 8备忘单中的可选
  4. 埋坑一: vue中子组件调用兄弟组件方法
  5. 【C++基础学习】引起类模板被实例化情形总结
  6. php期末作业经验,期末作业.php
  7. Android View框架总结(四)View布局流程之Measure
  8. DZ先生怪谈视图库GA/T1400之人脸对象
  9. Ubuntu20.04安装Nvidia显卡驱动
  10. 19年12月英语六级第一套听力单词
  11. latex制作中英文简历(含模板代码)
  12. mac 壁纸 android,Mac系统风格桌面
  13. 考研没过线也能录取?13种特殊录取方式!
  14. freeCodeCamp Falsy Bouncer
  15. GetFirmwareEnvironmentVariable失败返回错误码1314
  16. 1299: 【二分查找】找球号
  17. 微信公众平台企业号验证接口、回调 PHP版
  18. 【开说正事】猿宵节灯谜,你知多少?
  19. Java时间戳转换为日期格式
  20. 【 安信可模组TG-12F/TG-01M②】搭建Linux开发环境,二次开发直连阿里飞燕/天猫精灵平台,实现天猫精灵语音控制

热门文章

  1. python网络套接字_Python网络编程 Python套接字编程
  2. Linux mysql 登录 2002,Linux 下 Mysql error 2002 错误解决
  3. 不同的二叉搜索树 IIPython解法
  4. python闯关_99题--Python闯关
  5. python编写程序判断今天是今年的第几天_C语言判断今天是今年的第几天
  6. psychopy 音频时长代码_PsychoPy入门_03_视频和音频的呈现
  7. batchnorm pytorch_GitHub趋势榜第一:TensorFlow+PyTorch深度学习资源大汇总
  8. oracle 拼接_老品牌三明49寸液晶拼接屏多少钱支持定制
  9. 还有什么芯片没涨?ST、ON、Microchip、Xilinx、东芝开启新一轮涨价潮
  10. GD32如何替换STM32?