Java 对象属性批量复制实战:BeanUtils 使用指南
在实际业务开发里,咱们经常碰到这种场景:数据库查出来的实体对象(Entity),需要转成前端展示的视图对象(VO),或者传给下游服务的传输对象(DTO)。如果这两个类的字段名和类型完全一致,一个个写 set 方法不仅累,还容易出错。
这时候,BeanUtils 就能派上用场了。它能把源对象的所有非空属性,自动复制到目标对象上。
依赖准备
如果你是在 Spring 项目里,直接用 Spring 自带的工具最稳妥。Maven 依赖通常已经有了,如果没有,加上这个:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
注意,别把导入语句搞混了。Spring 的工具类路径是 org.springframework.beans.BeanUtils,而 Apache Commons 的是 org.apache.commons.beanutils.BeanUtils。虽然名字一样,但用法和异常处理不太一样。推荐优先用 Spring 版本,毕竟它不抛受检异常,用起来顺手。
代码实战
假设我们有两个类,结构一模一样:
public class Source {
private Long userId;
private String userName;
// getter/setter 省略
}
public class Target {
private Long userId;
private String userName;
// getter/setter 省略
}
复制操作只需要一行代码:
Source source = new Source();
source.setUserId(1L);
source.setUserName("Alice");
();
BeanUtils.copyProperties(source, target);

