使用Cglib的BeanCopier实现Bean的拷贝

避坑指南:Quectel EC200A-CN在OpenWrt或嵌入式Linux下的RNDIS/ECM网络配置全解析 本文详细解析了Quectel EC200A-CN模块在OpenWrt或嵌入式Linux下的RNDIS/ECM网络配置,包括模式选择、内核配置、动态切换AT指令、网络接口生成与排错、路由与防火墙设置、性能调优及特殊场景应对策略,帮助开发者避免常见配置陷阱,提升网络稳定性和效率。 阅读详情


      选择Cglib的BeanCopier进行Bean拷贝的理由是,其性能要比Spring的BeanUtils,Apache的BeanUtils和PropertyUtils要好很多,尤其是数据量比较大的情况下。

伦理片 http://www.dotdy.com/

       下面看具体例子:

Java代码   收藏代码
  1. package com.yusj.utils;  
  2.   
  3. import java.util.HashMap;  
  4. import java.util.Map;  
  5.   
  6. import net.sf.cglib.beans.BeanCopier;  
  7.   
  8. /** 
  9.  *  
  10.  * 将beancopier做成静态类,方便拷贝 
  11.  * <br>创建日期:2015年12月1日 
  12.  * <br><b>Copyright 2015 UTOUU All Rights Reserved</b> 
  13.  * @author yushaojian 
  14.  * @since 1.0 
  15.  * @version 1.0 
  16.  */  
  17. public class CglibBeanCopierUtils {  
  18.       
  19.     /** 
  20.      *  
  21.      */  
  22.     public static Map<String, BeanCopier> beanCopierMap = new HashMap<String, BeanCopier>();  
  23.       
  24.     /**  
  25.     * @Title: copyProperties  
  26.     * @Description: TODO(bean属性转换)  
  27.     * @param source 资源类 
  28.     * @param target  目标类  
  29.     * @author yushaojian 
  30.     * @date 2015年11月25日下午4:56:44 
  31.     */  
  32.     public static void copyProperties(Object source,Object target){  
  33.         String beanKey = generateKey(source.getClass(),target.getClass());  
  34.         BeanCopier copier = null;  
  35.         if (!beanCopierMap.containsKey(beanKey)) {  
  36.             copier = BeanCopier.create(source.getClass(), target.getClass(), false);  
  37.             beanCopierMap.put(beanKey, copier);  
  38.         }else {  
  39.             copier = beanCopierMap.get(beanKey);  
  40.         }  
  41.         copier.copy(source, target, null);  
  42.     }  
  43.     private static String generateKey(Class<?>class1,Class<?>class2){  
  44.         return class1.toString() + class2.toString();  
  45.     }  
  46.     /*注: 
  47.     (1)相同属性名,且类型不匹配时候的处理,ok,但是未满足的属性不拷贝; 
  48.     (2)get和set方法不匹配的处理,创建拷贝的时候报错,无法拷贝任何属性(当且仅当sourceClass的get方法超过set方法时出现) 
  49.     (3)BeanCopier  
  50.     初始化例子:BeanCopier copier = BeanCopier.create(Source.class, Target.class, useConverter=true) 
  51.     第三个参数userConverter,是否开启Convert,默认BeanCopier只会做同名,同类型属性的copier,否则就会报错. 
  52.     copier = BeanCopier.create(source.getClass(), target.getClass(), false); 
  53.     copier.copy(source, target, null); 
  54.     (4)修复beanCopier对set方法强限制的约束 
  55.     改写net.sf.cglib.beans.BeanCopier.Generator.generateClass(ClassVisitor)方法 
  56.     将133行的 
  57.     MethodInfo write = ReflectUtils.getMethodInfo(setter.getWriteMethod()); 
  58.     预先存一个names2放入 
  59.      109        Map names2 = new HashMap(); 
  60.      110        for (int i = 0; i < getters.length; ++i) { 
  61.      111          names2.put(setters[i].getName(), getters[i]); 
  62.                 } 
  63.     调用这行代码前判断查询下,如果没有改writeMethod则忽略掉该字段的操作,这样就可以避免异常的发生。*/  
  64.   
  65. }  

 影音先锋电影 http://www.iskdy.com/

maven依赖如下4个包:

Xml代码   收藏代码
  1. <dependency>  
  2.             <groupId>asm</groupId>  
  3.             <artifactId>asm</artifactId>  
  4.             <version>3.3.1</version>  
  5.         </dependency>  
  6.         <dependency>  
  7.             <groupId>asm</groupId>  
  8.             <artifactId>asm-commons</artifactId>  
  9.             <version>3.3.1</version>  
  10.         </dependency>  
  11.         <dependency>  
  12.             <groupId>asm</groupId>  
  13.             <artifactId>asm-util</artifactId>  
  14.             <version>3.3.1</version>  
  15.         </dependency>  
  16.         <dependency>  
  17.             <groupId>cglib</groupId>  
  18.             <artifactId>cglib-nodep</artifactId>  
  19.             <version>2.2.2</version>  
  20.         </dependency>  

 

车规SoC深度对比:高通8397 vs 比亚迪D9000 vs 联发科CT-X1/MT8676/MT2715 芯片优势弱势最适合场景高通 8397低功耗、低延迟AI和音频处理单屏算力略低HUD + 音响座舱 + 低延迟交互D9000多屏渲染、Wi-Fi7高速通信AI算力中等高端多屏座舱 + 流媒体娱乐CT-X1极高AI算力、多模态渲染功耗较高高端沉浸式智能座舱 + 多摄像头感知MT8676算力均衡、座舱应用全面GPU稍弱全栈智能座舱、音视频多任务MT2715成本低、入门座舱可用算力低,低端显示入门智能座舱、基础信息娱乐。 阅读详情

相关推荐

从FER2013到AffectNet:表情识别数据集十年演进史与你的项目选型攻略

本文回顾了从FER2013到AffectNet等主流人脸表情识别数据集的十年演进历程,详细分析了各数据集的特点、适用场景及技术突破。针对不同项目需求,提供了从移动端应用到高精度研究的选型策略,特别强调AffectNet在现代FER项目中的核心价值,并给出混合数据集构建的实战方案。

weixin_26808439的博客 522

Spring学习笔记(二)【CGLIB浅拷贝BeanCopier的使用和详解】

常用的bean拷贝工具类当中,主要有Apache提供的beanUtils、Spring提供的beanUtils、Cglib提供的beanCopier,性能上分析如下表所示

Vinjcent 7498

硕士论文排版救星:用Mathtype一键搞定所有公式格式(附样式预设文件)

本文详细介绍了如何使用Mathtype的样式预设和批量格式化功能,快速统一硕士论文中的公式格式。通过创建标准样式预设文件和一键批量处理,解决公式字体、大小、间距不统一的问题,确保符合学术规范要求,大幅提升论文排版效率。

weixin_30772105的博客 937

Java对象转换最佳方案

UserDO@Data}复制代码UserDTO@Data}复制代码软件系统一般都会进行分层,领域模型也会随之进行分层,即每层都有自己关注的模型对象;分层的主要原因是便于维护。模型之间的对象经常要互相转换,常用的转换实现有反射和get/set,反射的性能很差不建议使用然后写了基于get/set实现的beancopier和mapstruct使用方式,简单测试了下性能,mapstrcut优于其它各种对象转换方式。

m0_73257876的博客 1423

TIFF文件渲染避坑指南:Three.js与Cesium的5个关键差异点

本文深入对比了Three.js与Cesium在渲染TIFF文件时的5个核心差异点,包括坐标系处理、内存管理、着色器系统、性能优化策略和错误处理机制。重点解析了Cesium的全球WGS84坐标系与Three.js局部坐标系对地理空间数据渲染的根本影响,并提供了针对性的性能优化与调试方案,帮助开发者根据项目需求选择合适的3D引擎并有效避坑。

weixin_29243279的博客 332

ArcGISPro小白必看:5分钟搞定3D地形图制作(附免费数据源)

本文为ArcGISPro初学者提供5步制作专业3D地形图的完整指南,涵盖免费数据获取、项目初始化、数据预处理、3D场景构建和成果输出等关键步骤。特别推荐使用NASA的SRTM高程数据和吉林一号卫星影像,帮助用户快速掌握3D地形图制作技巧,适用于教学演示和科研分析。

weixin_28314575的博客 239

java Bean拷贝忽略空属性

java bean的拷贝一般采用两种办法 1.Spring里面的方法, org.springframework.beans.BeanUtils.copyProperties 2.Apache里面的方法,org.apache.commons.beanutils.BeanUtils.copyProperties 但是有需要注意的地方,Spring中BeanUtils.copyProperties(A...

weixin_43836438的博客 2620

蓝牙HCI Dongle实战:从芯片选型到协议栈集成的完整指南

本文详细介绍了蓝牙HCI Dongle的实战应用,从芯片选型到协议栈集成的完整指南。通过对比CSR8510、nRF52840等主流芯片的性能和价格,提供选型建议和避坑技巧。同时,深入解析Zephyr协议栈移植和常见问题排查,帮助开发者高效完成蓝牙项目开发。

weixin_30786657的博客 322

【C语言作业4】copy字符串,忽略空格

从键盘输入字符串,忽略空格后输出 ...

qq_44314658的博客 1307

基于高光谱的物质反演与分类 — 技术文章(原理详解 + 深度代码实现)

高光谱遥感 / 近场光谱采集产生逐像素上百波段的光谱曲线,是物质识别与定量反演(abundance / composition estimation)和语义分类(landcover / material class)的一把利器。本文第一部分对常用模型(线性混合模型、非线性辐射传输、稀疏反演、降维与特征选择、分类器/神经网络)进行数学推导与理论分析;第二部分给出两套完整实现:A. 基于 LMM 的约束最小二乘 / 稀疏反演流水线(含端到端评估);

VectorShift的博客 220

华为OD机试双机位C卷-组装新的数组(Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【组装新的数组】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - 组装新的数组。

qq_45776114的博客 1145

使用CGlib实现Bean拷贝(BeanCopier)

目录 BeanCopier基本用法 自定义转换器 封装BeanCopier   在做业务的时候,我们有时为了隔离变化,会将DAO查询出来的Entity,和对外提供的DTO隔离开来。大概90%的时候,它们的结构都是类似的,但是我们很不喜欢写很多冗长的b.setF1(a.getF1())这样的代码,于是我们需要BeanCopier来帮助我们。选择Cglib的BeanCopier进行Bean...

bingguang1993的博客 1839

boost::circular_buffer缓行缓冲区

1、circular_buffer实现了一个环形缓冲区,空间大小是固定的,当到达容器末尾时,将自动利用容器另一端的位置空间。 2、当程序需要容纳大量的元素,但多数情况下仅保存较少数量元素时可以使用circular_buffer_space_optimized,他可以有效的减少内存的占用,提高程序的运行效率。 3、主要接口: 4、实现一个生产者---消费者模式示例: #inc...

小米的修行之路 791

使用CGlib实现Bean拷贝(BeanCopier)

https://blog.youkuaiyun.com/zmx729618/article/details/78363191 二、自定义转换器 当源和目标类的属性类型不同时,不能拷贝该属性,此时我们可以通过实现Converter接口来自定义转换器 源类和目标类: Java代码 public class AccountEntity { private int id; private Timestamp cre...

大叶子不小的博客 875

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【Java对象拷贝机制】「实战开发专题」高性能使用CGlib实现Bean拷贝(BeanCopier)指南

都使用静态类调用,最终转化虚拟机中两个单例的工具对象。}ConvertUtilsBean可以通过ConvertUtils全局自定义注册。PropertyUtilsBean的copyProperties方法实现了拷贝的算法。然后把value复制到动态bean类。:key值逐个拷贝其他普通类:从beanInfo【每一个对象都有一个缓存的bean信息,包含属性字段等】取出name,然后把sourceClass和targetClass逐个拷贝。

世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。 6067

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

cglib BeanCopier的使用

一、概述   选择Cglib的BeanCopier进行Bean拷贝的理由是,其性能要比Spring的BeanUtils,Apache的BeanUtils和PropertyUtils要好很多,尤其是数据量比较大的情况下。   之前的一篇文章:Easy-mapper教程——模型转换工具提到了Cglib的BeanCopier使用ASM字节码生成技术,所以性能会非常好。   下面的文章内容直接整理...

weixin_33985679的博客 1491

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

BeanCopier的使用

【代码】BeanCopier的使用。

weixin_43860634的博客 4006

Copier实现Bean的拷贝

选择Cglib的BeanCopier进行Bean拷贝的理由是,其性能要比Spring的BeanUtils,Apache的BeanUtils和PropertyUtils要好很多,尤其是数据量比较大的情况下。 1、简单例子,pom.xml <!-- cglib的BeanCopier需要的依赖 --> <dependency> ...

tdt008的博客 589

CGLIB BeanCopier和BeanMap等实现

BeanCopier,BulkBean,Enancher等内容,以前虽大致知道一些内容,原理是通过bytecode,但没具体深入代码研究,只知其所用不知其所以然,所以就特地花了半天多的工作时间研究了CGLIB的相关源码,同时结合看了下 spring Aop中对CGLIB的使用。 本文主要通过对cglib有原理的分析,反编译查看源码,例子等方式做一...

weixin_33924770的博客 939

copy bean的工具类

public class CopyUtils { /** * 完成bean之间的拷贝 * @param source 源对象 * @param dest 目标对象 */ public static void copy(Object source, Object dest){ if (source != null) { BeanCopier copier = Bean...

yyyyyysssssshhhhhh的博客 741

jsp和controller数据交互工具类

1 2 import java.util.ArrayList; import java.util.List; import java.util.concurrent.ConcurrentHashMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.cglib

lisheng19870305的专栏 1391

Java基础外站相关博客链接

Java8特性① Lambda 表达式 https://www.jianshu.com/p/4b6a875694f0

u012755196的博客 156

使用 cgLib BeanCopier 高性能 拷贝Java 对象 包括List 集合 工具

使用 BeanCopier 拷贝Java 对象 包括List 集合 package net.tt.xuanliu; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Supplier; /** * @ClassName BeanUtils * @Description bean 工具 * @Author

qq_40124831的博客 2782
上一篇: 移动广告平台如何变得更具有价值?
下一篇: day_31Java注解---Annotation
dotedy
博客等级 码龄11年 61粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值