Bean复制的几种方法介绍
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章主要讲解了"Bean复制的几种方法介绍",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Bean复制的几种方法介绍"吧!4 种复制方法:Apach
千家信息网最后更新 2025年12月03日Bean复制的几种方法介绍
这篇文章主要讲解了"Bean复制的几种方法介绍",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Bean复制的几种方法介绍"吧!
4 种复制方法:
Apache BeanUtils
Apache PropertyUtils
Spring BeanUtils
Cglib BeanCopier
测试 Bean,FromBean 与 ToBean 属性一致
public class FromBean { private String name; private int age; private double money; public double getMoney() { return money; } public void setMoney(double money) { this.money = money; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; }}测试方法
import org.apache.commons.beanutils.BeanUtils;import org.apache.commons.beanutils.PropertyUtils;import org.springframework.cglib.beans.BeanCopier;public class Test { public static void main(String[] args) { FromBean fb = new FromBean(); fb.setAge(20); fb.setMoney(30000.111); fb.setName("测试"); int count = 10; convert((tb) -> BeanUtils.copyProperties(tb, fb), count, "Apache BeanUtils.copyProperties"); convert((tb) -> PropertyUtils.copyProperties(tb, fb), count, "Apache PropertyUtils.copyProperties"); convert((tb) -> org.springframework.beans.BeanUtils.copyProperties(fb, tb), count, "Spring BeanUtils.copyProperties"); BeanCopier bc = BeanCopier.create(FromBean.class, ToBean.class, false); convert((tb) -> bc.copy(fb, tb, null), count, "Cglib BeanCopier.copy"); } public static void convert(ConvertBean cb, int count, String type) { try { System.out.println(type + "开始进行测试"); long start = System.currentTimeMillis(); for (int i = 0; i < count; i++) { ToBean tobean = new ToBean(); cb.convertMethod(tobean); System.out.println(tobean.getAge()); System.out.println(tobean.getMoney()); System.out.println(tobean.getName()); } System.out.println("耗时 " + (System.currentTimeMillis() - start) + " ms"); System.out.println("----------------------"); } catch (Exception e) { System.out.println("Exception: " + e.getMessage()); e.printStackTrace(); } }}@FunctionalInterfaceinterface ConvertBean { void convertMethod(ToBean tb) throws Exception;}打印结果
Apache BeanUtils.copyProperties开始进行测试耗时 1178 ms----------------------Apache PropertyUtils.copyProperties开始进行测试耗时 5 ms----------------------Spring BeanUtils.copyProperties开始进行测试耗时 172 ms----------------------Cglib BeanCopier.copy开始进行测试耗时 0 ms----------------------
测试结果
单位:ms
count:10
| 次数:10 | 第一次 | 第二次 | 第三次 | 第四次 | 平均值 | 单次平均值 |
|---|---|---|---|---|---|---|
| Apache BeanUtils | 1178 | 1029 | 917 | 1019 | 1035.75 | 103.575 |
| Apache PropertyUtils | 5 | 4 | 8 | 4 | 5.25 | 0.525 |
| Spring BeanUtils | 172 | 257 | 123 | 135 | 171.75 | 17.175 |
| Cglib BeanCopier | 0 | 0 | 0 | 0 | 0 | 0 |
count:100
| 次数:100 | 第一次 | 第二次 | 第三次 | 第四次 | 平均值 | 单次平均值 |
|---|---|---|---|---|---|---|
| Apache BeanUtils | 1868 | 1258 | 1624 | 1260 | 1502.5 | 15.025 |
| Apache PropertyUtils | 16 | 10 | 18 | 17 | 15.25 | 0.1525 |
| Spring BeanUtils | 193 | 152 | 209 | 215 | 192.25 | 1.9225 |
| Cglib BeanCopier | 0 | 0 | 0 | 0 | 0 | 0 |
count:10000
| 次数:10000 | 第一次 | 第二次 | 第三次 | 第四次 | 平均值 | 单次平均值 |
|---|---|---|---|---|---|---|
| Apache BeanUtils | 1611 | 1657 | 1786 | 1572 | 1656.5 | 0.16565 |
| Apache PropertyUtils | 243 | 64 | 194 | 111 | 153 | 0.0153 |
| Spring BeanUtils | 551 | 217 | 433 | 431 | 408 | 0.0408 |
| Cglib BeanCopier | 10 | 6 | 3 | 7 | 6.5 | 0.00065 |
结论
数量越大平均每次耗时越少
综合 Cglib BeanCopier 性能最好,但在使用前,要先用 BeanCopier.create 定义
Cglib在测试的时候,先进行了实例的缓存,这个也是他性能较好的原因
Spring BeanUtils 不能转化 java.util.Date,可以支持它的子类 java.sql.Date
感谢各位的阅读,以上就是"Bean复制的几种方法介绍"的内容了,经过本文的学习后,相信大家对Bean复制的几种方法介绍这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
测试
方法
平均值
次第
次数
第一次
学习
内容
性能
结果
一致
单位
原因
复制方法
子类
实例
就是
属性
思路
情况
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
嵌入式和网络安全方向研究生
威纶通的数据库在哪
大连智学网络技术有限公司
正规网络安全方案设计收费
滕州网络安全工作地点
由于网络技术软件平台病句
游戏软件开发项目培训
山西硕成软件开发有限公司地址
云上服务器防护安全
网络安全实训报告总结
硬件和软件开发哪个难
提升网络安全技术更新快
数据库模型卡通图片
互联网科技信息投资计划
服务器电源开关旁边亮红灯
数据库加速国产替代
单位开展网络安全宣传活动
网络技术网络暴力
直接使用wps创建数据库
web用什么软件开发
上海网络软件开发销售
可应用到软件开发全过程
网络安全公安工作职责
岳阳道赋网络技术有限公司
服务器如何删除已安装的系统
股票历史数据如何保存到数据库
家用的笔记本上面有数据库么
数据库怎么装到d盘
nodejs 数据库
cuda软件开发工具包