hutool工具类BeanUtil及其方法

文档地址 https://plus.hutool.cn/apidocs/

Class BeanUtil

public class BeanUtil
extends Object
Bean工具类
把一个拥有对属性进行set和get方法的类,我们就可以称之为JavaBean。

copyProperties 方法

public static T copyProperties(Object source,
Class tClass,
String... ignoreProperties)

按照Bean对象属性创建对应的Class对象,并忽略某些属性

Type Parameters:
T - 对象类型

Parameters:

  • source - 源Bean对象
  • tClass - 目标Class
  • ignoreProperties - 不拷贝的的属性列表

Returns:
目标对象

示例代码

UserDTO userDTO = BeanUtil.copyProperties(user, UserDTO.class);

这行代码的作用是将 user 对象的属性值复制到一个新的 UserDTO 对象中:

这里使用的是 Hutool 工具库中的 BeanUtil.copyProperties 方法。


🧩 逐部分解析

  • BeanUtil.copyProperties(user, UserDTO.class) 这是 Hutool 提供的一个静态方法,用于将源对象 user 的属性值复制到目标类 UserDTO 的新实例中

  • UserDTO userDTO = ... 将复制后的 UserDTO 实例赋值给变量 userDTO,以便后续使用


✅ 使用场景

这种属性复制的方式在实际开发中非常常见,尤其是在以下场景中

  1. 数据传输对象(DTO)转换 在服务层与控制层之间传递数据时,通常会使用 DTO 来封装数据,避免直接暴露实体类

  2. 简化代码 避免手动编写大量的 get/set 方法,提高代码的可读性和可维护性

  3. 数据脱敏或过滤 在将数据返回给前端时,可以通过 DTO 来控制返回的字段,避免敏感信息泄露


⚠️ 注意事项

  • 属性名和类型需一致 BeanUtil.copyProperties 方法会将源对象中与目标类中属性名和类型都一致的属性进行复制。如果属性名或类型不一致,该属性将不会被复制

  • 浅拷贝 该方法进行的是浅拷贝,即对于引用类型的属性,复制的是引用而不是对象本身。如果需要深拷贝,需要使用其他方法

  • 性能考虑 虽然 BeanUtil.copyProperties 使用了反射机制,性能相较于手动赋值略低,但在大多数应用场景下,这种性能差异是可以接受的

posted @ 2025-04-12 13:47  kuki'  阅读(452)  评论(0)    收藏  举报