Bean复制的几种方法介绍
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章主要讲解了"Bean复制的几种方法介绍",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Bean复制的几种方法介绍"吧!4 种复制方法:Apach
千家信息网最后更新 2025年01月23日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安全错误
数据库的锁怎样保障安全
如何加强网络安全保护
淘宝天猫数据库
怎么用笔记本电脑搭建服务器
点菜系统数据库设计
Oracle数据库
南山区教育科研网络安全审计
企业网络安全需要做什么
解析服务器ip
武汉高职学校软件开发哪个好
华为手机的软件开发
数据库说明文档模板
首都网络安全日 口号
萝岗软件开发哪家强
上海公安局宣传网络安全
代理服务器软件原理
海南企业软件开发制造价格
服务器已经断开连接
网络安全的工程设计开发
软件开发工程师提问客户
应天软件开发
天河网络安全靠谱吗
客户服务数据库建设
互联网+科技创新大赛
数据库证书啥时候报名
计算机三级网络技术通关秘诀
post数据 写入数据库
数据库tsp
昆山专业性网络技术服务电话
软件开发画图工具怎么使用
贵阳天逸互联网科技