简单描述:之前在写代码的时候,经常把表单提交到后台的对象的参数,通过getter方法取出来,然后,再通过setter方法传递给需要的对象,代码中写了很多get set这种方法,后来听同事说,spring有一个BeanUtils.copyProperties()方法,可以代替我们手动来完成取值赋值的操作。我就试了试,发现果然可以。

BeanUtils.copyProperties(courseObj, courseVo);//把courseObj里的属性通过反射赋值给courseVo里相同的属性,不同的不赋值   前赋后

下边是spring 的BeanUtils中copyProperties方法的源码:

上边注释的意思就是:复制源bean的参数值给目标bean    源Class和目标Class不必相互匹配甚至相互派生彼此(我的理解是不需要有父子继承关系),只要参数匹配就行。任何源bean暴露(拥有)的参数,而目标bean没有的参数都会被忽略。意思就是指复制那些两者都有的参数值给目标对象。这是一个很方便的方法,对于更复杂的转换需求,考虑使用一个完整的BeanWrapper。  嗯嗯,就这样啦。

真的是省了很多的这种代码 courseVo.setName(courseObj.getName());

另外 apache也提供有copyProperties()方法,apache的org.apache.commons.beanutils就提供了两种,一个是子包org.apache.commons.beanutils.BeanUtils---->copyProperties() 另一个是子包org.apache.commons.beanutils.PropertyUtils--->copyProperties(),不过需要注意的是这两个方法的参数和spring的参数位置是相反的    copyProperties(target, source)

最新文章

  1. Java工程师成神之路
  2. Java RandomAccessFile用法
  3. 【洛谷P1196】银河英雄传说
  4. 两台Linux主机之间文件的复制
  5. Troubleshooting FIM: (No Display Name) in FIM Portal
  6. 在主类E的main方法中,创建类B 的对象并赋给父类A的对象a,使用上转型对象a来测试上转型对象的一些特性。
  7. Windows 怎么知道我已连线到网际网络? 原来当中大有文章!
  8. 【BZOJ2342】双倍回文(回文树)
  9. JDBC mysql 相关内容笔记
  10. Git操作记录
  11. Java常见的10个异常
  12. git常用操作记录
  13. NGINX的几个应用场景
  14. c#面向对象基础4
  15. Redis学习五:Redis的持久化-RDB
  16. TCP建立连接的三次握手和TCP连接断开的四次挥手
  17. 【Alpha】Phylab 发布说明
  18. 参数依赖查找(ADL,Argument-dependent lookup)
  19. 【Django】uWSGI和Gunicorn【转】
  20. Python-并发编程(线程)

热门文章

  1. 【THUSC2017】【LOJ2982】宇宙广播 计算几何 高斯消元
  2. Django视图
  3. Promise的源码实现(完美符合Promise/A+规范)
  4. ORACLE创建表空间 新建用户 授权
  5. linux通过expect工具来实现自动登录服务器,并执行相关操作
  6. Windows10搭建FTP服务
  7. 使用 LD_PRELOAD 变量拦截调用
  8. 配置rpm包安装的jdk环境变量
  9. 使用以太网通信方式刷新AB PLC固件
  10. app每次更新版本时调用js代码提示用户下载更新