网站首页 > 博客文章 正文
简述
这里大概总结一下平时java开发用到的一些属性复制工具,下面列了个表格做个简单对比。
实践
工具 | 实现方式 | 性能 | 同名异类型属性处理 | 稳定性 |
org.springframework.beans.BeanUtils#copyProperties | 使用反射机制直接对目标对象进行属性赋值 | 中等 | 直接覆盖,不做类型匹配检查 | 较为稳定 |
Apache Commons BeanUtils | 使用反射机制直接对目标对象进行属性赋值 | 中等 | 通过自定义转换器对同名异类型属性进行处理 | 较为稳定 |
Orika Mapper | 生成字节码实现对象拷贝 | 最优 | 通过自定义 Mapper 对象来完成对同名异类型属性的映射 | 较为稳定 |
MapStruct | 通过注解生成 Java 代码,避免了反射机制带来的性能问题 | 最优 | 通过自定义 Mapper 接口来完成对同名异类型属性的映射 | 较为稳定 |
ModelMapper | 模块化、可配置的 Java Bean 映射工具 | 中等 | 通过自定义 TypeMap 来完成对同名异类型属性的映射 | 较为稳定 |
Dozer Mapper | 基于 XML 文件或注解实现复杂对象映射的轻量级框架 | 最慢 | 支持类型自动转换、自定义转换器以及自动加载默认转换器 | 相对稳定但使用中出现过一些问题的报告 |
JMapper | 底层使用 Java 字节码生成技术 | 快速 | 支持类型自动转换并提供简单易用的注解配置方式 | 稳定 |
EasyMap | 通过反射机制直接对目标对象进行属性赋值 | 中等 | 覆盖同名属性,不检查类型匹配 | 相对稳定 |
HuTool | 使用反射机制完成对象属性复制 | 中等 | 通过自定义转换器处理对象间同名异类型属性 | 相对稳定 |
以上所述是对比分析各种 Java Bean 映射工具时可以参考到的一些维度。需要注意的是,在实际应用中,选择合适的映射工具还需要根据具体业务场景和需求进行权衡取舍。例如,如果需要处理大量对象拷贝的场景,可以考虑选择性能较优的 Orika Mapper 或者 MapStruct;如果需要支持复杂的映射关系,并且对性能要求比较低,可以使用 Dozer Mapper 等 XML 配置型的框架;如果项目本身集成了 Spring 框架,那么建议优先选用 Spring 自带的 BeanUtils 工具类等基础组件。
各位道友若是感觉文章还不错,记得点赞关注下。
猜你喜欢
- 2024-11-12 基于SpringBoot 的CMS系统,拿去开发企业官网真香(附源码)
- 2024-11-12 解决JAVA压缩图片变色问题(java压缩图片至指定大小)
- 2024-11-12 J2eeFAST 开源平台(j2ee开发工具)
- 2024-11-12 Java项目中用它来代替一半的反射使用,爽到飞起!
- 2024-11-12 反射用不好真的会影响代码执行效率!
- 2024-11-12 基于AbstractProcessor扩展MapStruct自动生成实体映射工具类
- 2024-11-12 Java面试问题(一)—— java 基础(java面试问题大全及答案大全)
- 2024-11-12 一个轻量级的Java快速开发平台快速开发项目并交付「接私活利器」
- 2024-11-12 电商系统中的 ID 是如何生成的?(电商注册账号是什么)
- 2024-11-12 用了这两款插件,同事再也不说我代码写的烂了
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)