使用
import org.apache.commons.beanutils.PropertyUtils;
import org.springframework.beans.BeanUtils;

都是浅拷贝,BeanUtils.copyProperties提供类型转换功能,BeanUtils会调用默认的转换器(Converter)进行类型转换,所以在拷贝时能对八个基本类型间进行转换,不能转换时抛出错误 ,但是类型不同时值不会被复制
PropertyUtils.copyProperties不提供类型转换功能,即发现两个JavaBean的同名属性为不同类型时,不会复制。

经过验证并没有像网上有人说的会报异常。。。

PropertyUtils来自maven坐标

<dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>1.9.4</version>
</dependency>

BeanUtils来自spring-beans

<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.1</version>
</dependency>

测试代码如下:

import org.apache.commons.beanutils.PropertyUtils;/*** @Author: * @Description:* @Date: Created in 9:19 AM 2019/8/28* @Modified By:*/
public class CopyClass {public static void main(String[] args) throws Exception {User u1 = new User();u1.setAge(10);u1.setPassword("22222");u1.setUserName("王黄");u1.setD(1.0f);ToUser u2 = new ToUser();
//        BeanUtils.copyProperties(u1, u2);PropertyUtils.copyProperties(u2, u1);System.out.println(u1.getD().getClass());System.out.println(u2.getD().getClass());}}class User {private String userName;private String password;private Integer age;private Float d;public Float getD() {return d;}public void setD(Float d) {this.d = d;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}}class ToUser {private String userName;private String password;private Integer age;private String d;public String getD() {return d;}public void setD(String d) {this.d = d;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}}

执行BeanUtils.copyProperties(u1, u2);以后的结果是



执行PropertyUtils.copyProperties(u2, u1)以后的结果

PropertyUtils与BeanUtils区别相关推荐

  1. 对象拷贝类PropertyUtils,BeanUtils,BeanCopier的技术沉淀

    2019独角兽企业重金招聘Python工程师标准>>> 对象拷贝类PropertyUtils,BeanUtils,BeanCopier的技术沉淀 博客分类: java 对象拷贝的应用 ...

  2. BeanUtils.copyProperties VS PropertyUtils.copyProperties

    1. 通过反射将一个对象的值赋值个另外一个对象(前提是对象中属性的名字相同). 2. BeanUtils.copyProperties(obj1,obj2); 经常闹混不知道是谁给谁赋值,无意中先到& ...

  3. 【开发日志-已归档】2020-09

    [centos]关闭You have new mail in /var/spool/mail/root提示 这个提示是LINUX会定时查看LINUX各种状态做汇总,每经过一段时间会把汇总的信息发送的r ...

  4. BeanCopier性能对比

    概述 常见或常用的几种Bean属性复制工具 Apache.BeanUtils Apache.PropertyUtil Spring.BeanUtils Cglib.BeanCopier MapStru ...

  5. log4j2logback打印日志的效率问题【细节3】bean属性拷贝【细节4】

    2019独角兽企业重金招聘Python工程师标准>>> 1).在打印日志时,我们可以使用下面的代码: logger.debug("Entry Number :"+ ...

  6. Spring--BeanUtils工具类--使用/实例

    原文网址:Spring--BeanUtils工具类--使用/实例_IT利刃出鞘的博客-CSDN博客 简介 说明         本文介绍Spring的BeanUtils工具类的用法. 我们经常需要将不 ...

  7. 《Java工程师成神之路》深入理解Java核心技术(基础篇)

    学习目标: 深入理解Java核心技术(基础篇) 学习内容: 1.面向对象的五大基本原则 (1)单一职责原则:一个类应该有且只有一个去改变它的理由,这意味着一个类应该只有一项工作. (2)开放封闭原则: ...

  8. BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别

    转自:http://www.cnblogs.com/fayf/articles/1272982.html 一.简介:BeanUtils提供对Java反射和自省API的包装.其主要目的是利用反射机制对J ...

  9. PropertyUtils.copyProperties和BeanUtils.copyProperties使用区别

    位于org.apache.commons.beanutils包里面的这两个参数拷贝方法可以复制一个对象中相同名字的参数值到另一个对象,能简化很多代码,但是这两个copy方法使用起来有很大区别. /** ...

  10. 工具类:BeanUtils和PropertyUtils的区别

    相同点: 都是浅拷贝,都提供了copyProperties()方法,只要属性名相同就可以从源bean中拷贝值到目标bean中 不同点: BeanUtils.copyProperties("转 ...

最新文章

  1. 【杂谈】为什么我们从来不追热点,循序渐进学习它不好吗?
  2. always on sql 收缩日志_SQL Server AlwaysOn日志收缩
  3. linux查看当前会话文件夹,Linux 记录会话过程的命令
  4. 机器人是如何群居生活的?
  5. 开发和编程是一样的吗?区别有哪些?
  6. lua里面的客户端服务器协议,Lua 服务器与客户端实例(转)
  7. ddos应急处理_当遇到DDOS攻击的几种应对措施
  8. Hessian 3.2.0的两个bug(转)
  9. 欢迎北京超图加入openGauss社区
  10. 2021父亲节祝福话语、海报素材大全
  11. 谈程序员的职业发展前景
  12. 机器学习笔记 - Moore-Penrose 伪逆
  13. CSDN(编程的开始)
  14. 【设计模式】【结构型模式】装饰器模式
  15. ChatGPT到底是个啥 - 它甚至会和狗说话
  16. 赋予城市生命力,新华三的智慧城市理念
  17. 全国高校云计算机应用创新,关于举办“第三届全国高校云计算应用创新大赛”的通知...
  18. SIMCOM800C GSM模组(2G通信模组)AT指令测试 TCP 通信过程
  19. 你认为喜剧演员何欢什么时候会走红?
  20. QCC---MDE使用介绍

热门文章

  1. linux wget无法下载文件,wget下载文件
  2. php博客添加live2d,在Hexo博客上添加可爱的Live 2D模型
  3. 天勤计算机考研高分笔记(一)绪论1数据结构
  4. matlab半波整流怎么做,基于Matlab的单相半波可控整流电路的设计与仿真.doc
  5. php 跨域 json,php跨域调用json的例子
  6. STM32+DWM1000开发uwb测距系列教程之二:源码分析及源码移植(基于STM32 cubemx+keil MDK)
  7. ghost 通过docker安装
  8. [转载][路由器] k2p支持ipv6相关设置
  9. matlab人口增长模型拟合,matlab曲线拟合人口增长模型及其数量预测
  10. 【瑞利衰落信道】理论+模型+仿真