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

本文介绍了Spring的BeanUtils工具类的使用,包括如何进行对象属性复制,以及与Apache BeanUtils的区别。Spring BeanUtils提供了便捷的浅拷贝功能,而Apache BeanUtils性能较差且不建议使用。在进行属性复制时,可以忽略特定字段,并且Spring的API使用更直观,不需要捕获异常。此外,文章还提到了Apache BeanUtils支持的类型转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文网址:Spring工具类--BeanUtils--使用/实例_IT利刃出鞘的博客-CSDN博客

简介

说明

本文介绍Spring的BeanUtils工具类的用法。

我们经常需要将不同的两个对象实例进行属性复制,比如将DO对象进行属性复制到DTO,这种转换最原始的方式就是手动编写大量的 get/set代码,很繁琐。为了解决这一痛点,就诞生了一些方便的类库,常用的有 Apache的 BeanUtils,Spring的 BeanUtils, Dozer,Orika等拷贝工具。

由于Apache的BeanUtils的性能很差,强烈不建议使用。阿里巴巴Java开发规约插件上也明确指出:
“Ali-Check | 避免用Apache Beanutils进行属性的copy。”

Spring的BeanUtils方法

方法说明
BeanUtils.copyProperties(source, target);source对应的对象成员赋值给target对应的对象成员
BeanUtils.copyProperties(source, target, "id", "time");忽略拷贝某些字段。本处是忽略:id与time

Spring的BeanUtils方法注意事项 

  1. BeanUtils是浅拷贝
  2. 泛型只在编译期起作用,不能依靠泛型来做运行期的限制; 

浅拷贝和深拷贝

  1. 浅拷贝:对基本数据类型进行值传递,对引用数据类型,使用其引用地址,不拷贝其内容,此为浅拷贝
  2. 深拷贝:对基本数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容,此为深拷贝。

Spring的BeanUtils与Apache的BeanUtils区别

Spring的BeanUtilsApache的BeanUtils
性能

好。

原因:对两个对象中相同名字的属性进行简单的get/set,仅检查属性的可访问性

差。

原因:有很多检验:类型的转换、对象所属类的可访问性等

注意:本处类型转换是类似的类,多个String转为List<String>是不行的。

使用方面

第一个参数是源,第二个参数是目标。

无需捕获异常

第一个参数是目标,第二个参数是源。

必须捕获异常

深/浅拷贝浅拷贝浅拷贝

Apache的BeanUtils方法。(依赖:maven里直接搜“commons-beanutils”)

方法说明
BeanUtils.copyProperties(Object target, Object source);source对应的对象成员赋值给target对应的对象成员
BeanUtils.copyProperties(Object target, String name, Object source);只拷贝某些字段。

Apache的BeanUtils支持的类型转换

  1. java.lang.BigDecimal
  2. java.lang.BigInteger
  3. boolean and java.lang.Boolean
  4. byte and java.lang.Byte
  5. char and java.lang.Character
  6. java.lang.Class
  7. double and java.lang.Double
  8. float and java.lang.Float
  9. int and java.lang.Integer
  10. long and java.lang.Long
  11. short and java.lang.Short
  12. java.lang.String
  13. java.sql.Date
  14. java.sql.Time
  15. java.sql.Timestamp

java.util.Date是不被支持的,而它的子类java.sql.Date是被支持的。因此如果对象包含时间类型的属性,且希望被转换的时候,一定要使用java.sql.Date类型。否则在转换时会提示argument mistype异常。

实例

上边是文章的部分内容,为便于维护,全文已转移到此网址:Spring工具类-BeanUtils的使用 - 自学精灵

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT利刃出鞘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值