spring java属性copy_Spring 使用 BeanUtils.copyProperties 复制 Java Bean 属性

如果有两个 Java Bean,有多个相同类型和命名的属性,可以使用 Spring 的 BeanUtils.copyProperties 快速将一个 Java Bean 对象的属性复制到另外一个 Java Bean 对象中。

Java Bean 定义中要求实现序列化接口,BeanUtils.copyProperties 不强制这一条。只要属性有 getter、setter 方法即可。

BeanUtils 类的全路径是:

属于 spring-beans 项目, gradle 中引入 spring-beans 即可:

也可以只引入 spring-context, spring-beans 是它的一个依赖:

本文中的示例,使用了 lombok,具体使用方式可参考Java Lombok 。

使用示例

定义 3 个 Java Bean

示例: 从 Person 到 Person

运行结果:

示例: 从 Person 到 Student

运行结果:

Person 比 Student 少了一个 address 属性,所以 Student 的 address 是 null。

示例: 从 Student 到 Person

运行结果:

示例: 从 Student 到 Student

上面的示例,其实已经够用了,但我们要注意一下,BeanUtils.copyProperties 是浅复制。

运行结果:

错误的使用示例

没有 setter、getter 方法的类,使用 BeanUtils.copyProperties 是没有效果的。

运行结果:

可以看到 person2 的name 和 age 都是默认值,复制没有效果。

类似的,下面的这些用法也是错误的:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值