千家信息网

Bean复制的几种方法介绍

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要讲解了"Bean复制的几种方法介绍",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Bean复制的几种方法介绍"吧!4 种复制方法:Apach
千家信息网最后更新 2026年10月31日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 BeanUtils1178102991710191035.75103.575
Apache PropertyUtils54845.250.525
Spring BeanUtils172257123135171.7517.175
Cglib BeanCopier000000

count:100

次数:100第一次第二次第三次第四次平均值单次平均值
Apache BeanUtils18681258162412601502.515.025
Apache PropertyUtils1610181715.250.1525
Spring BeanUtils193152209215192.251.9225
Cglib BeanCopier000000

count:10000

次数:10000第一次第二次第三次第四次平均值单次平均值
Apache BeanUtils16111657178615721656.50.16565
Apache PropertyUtils243641941111530.0153
Spring BeanUtils5512174334314080.0408
Cglib BeanCopier106376.50.00065

结论

  • 数量越大平均每次耗时越少

  • 综合 Cglib BeanCopier 性能最好,但在使用前,要先用 BeanCopier.create 定义

Cglib在测试的时候,先进行了实例的缓存,这个也是他性能较好的原因

Spring BeanUtils 不能转化 java.util.Date,可以支持它的子类 java.sql.Date

感谢各位的阅读,以上就是"Bean复制的几种方法介绍"的内容了,经过本文的学习后,相信大家对Bean复制的几种方法介绍这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

测试 方法 平均值 次第 次数 第一次 学习 内容 性能 结果 一致 单位 原因 复制方法 子类 实例 就是 属性 思路 情况 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 江苏根荣互联网科技 科技互联网公司装修 朗新科技与工业互联网 万易互联网科技 上海挚品互联网科技 易通互联网络科技有限公司 广州紫鲸互联网科技 掌上梦互联网科技 互联网科技大会案例 镁科技互联网资讯平台 富国互联网科技创新基金 移动互联网科技股 移动互联网科技公司 互联网科技和法律行业 半导体行业属于互联网高科技类吗 上海万顺科技互联网有限公司招聘 互联网科技手抄报图片 河南商务圈互联网科技有限公司 互联网科技创新方面的资料 互联网科技企业文化 百单互联网科技有限公司 美国互联网前沿科技 科技大学互联网专业好不好 济南和联互联网科技有限公司 开启互联网科技时代小说 彤创互联网科技有限公司 速维有品互联网信息科技(苏州)有限公司 图游互联网科技 安徽零酒互联网科技有限公司 每日互联网科技新闻
0