- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
BeanUtils.copyProperties十有八九是你这些年工作中用的很多的其中一个,不管是Apache的还是Spring的.
网上的解释浩如烟海,我这边用一个超简单的例子直观展示给你看.
以后就记住了,能不用就不用.
我收纳了几个网上最典型的解释,也就是这个工具类的缺点,可以先回顾一下.
大致如下:
1、只能浅拷贝,简单理解就是只复制的引用,没复制对象内容; 。
2、名称和类型要匹配,不匹配的属性会复制失败; 。
3、性能一般,因为用了反射机制.
这里面,其实对于我们来讲,这个工具好不好用,理解第2点就足够了.
假设一个user对象,有个属性是手机号,那么我们看看使用BeanUtils后是什么效果.
这是原对象,定义联系方式是telePhone.
然后我们定义一个接收拷贝的对象 。
使用BeanUtils.copyProperties拷贝后效果如下:
可以看到,因为名称少了一个字母,所以拷贝后联系方式是null.
如果是返回给前端的接口数据,字段又多,这样的问题会耽误你不少时间.
我们再换个测试方式,原对象有个age属性是String类型.
而接收拷贝的对象,因为你的同事偷懒,误以为不是String,就给个Integer类型.
看看效果,不会报错.
但是age也是null,没有复制成功.
其实上面两个就是典型的缺点了,那我们如果再极端点,假设你某天遇到了猪队友.
你们有一个类型是金额,原对象类型是BigDecimal.
而猪队友自己创建了一个VO,给你来个double类型,你觉得会报错吗?
假如这个金额传的还挺大 。
看下效果 。
玛德,直接钱没了,你完了.
工作这么多年,上面的坑我基本都踩过,有些是我踩别人的.
所以我挺早就开始像下面这么用了,返璞归真了.
没错,直接用IDEA的插件自动生成setter,然后写值.
什么BeanUtils,什么MapStruct,什么ModelMapper,都再见! 。
灵活,可控,直观,性能还好,字段多也多不到哪里去,中小企业的最佳选择.
我所在的互联网公司,从前年开始就已经禁止使用BeanUtils.copyProperties了,因为坑了太多队友.
有段时间也有项目用MapStruct,但是当映射变得复杂时,配置也相应复杂起来,而且错误信息有时会不清晰.
所以最终我们还是返璞归真了,用插件简化映射,人工赋值,降低维护难度,已被列入了公司的编程规范.
君子,不立于危墙之下,看得见摸得着的心里才踏实.
喜欢就点赞关注↓↓↓,更多干货持续输出.
最后此篇关于BeanUtils.copyProperties:曾经是我的女神,现在是我的毒药。的文章就讲到这里了,如果你想了解更多关于BeanUtils.copyProperties:曾经是我的女神,现在是我的毒药。的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我有一个具有多个依赖项的项目,最终导致 取决于以下内容(我从 sbt-dependency-graph plugin 得到这些): commons-beanutils:commons-beanutil
我在使用列表时遇到了 Axis2 v1.6.1 和 v1.6.2 的以下问题: java.lang.StackOverflowError: org.apache.axis2.databinding.u
前言 呵呵 前端时间使用 BeanUtils.copyProperties 的时候碰到了一个这样的问题 我有两个实体, 有同样的属性, 一个有给定的属性的 getter, 另外一个有 给定的属性
目录 BeanUtils.copyProperties复制属性失败 描述 解决办法 BeanUtils.copyProper
目录 1.前言 2.一般使用 3.拷贝属性时忽略空值 4.使用注意事项(1) 5.使用注意事项(2) 6.使用注意事项(3)
我尝试使用 BeanUtils 将数据(java.util.Date)值从源复制到目标。它给出了日期到字符串转换异常。 此类问题的解决方案是什么? 我的实现如下.. import java.util
有这个: public class Parent { private String name; private int age; private Date birthDate;
我有一个 Web 项目,其中 BeanUtils 用于操作 bean。 在我的代码中,为了使 BeanUtils 将字符串记录正确地传输到 java.util.Date 字段中,一个 DateConv
目录 BeanUtils.copyProperties()参数的赋值顺序 BeanUtils.copyProperties初体验,及其参数含义解释
目录 BeanUtils.copyProperties()拷贝id属性失败 部分代码如下 解决方法 BeanUtils.co
场景 开发中经常遇到,把父类的属性拷贝到子类中。通常有2种方法: 1、一个一个set 2、用BeanUtils.copyProperties 很显然BeanUtils更加方便,也美观很多。 那么任
我有以下类(class): import org.apache.commons.beanutils.BeanUtils; import com.thoughtworks.xstream.XStream
我正在使用 BeanUtils.copyProperties 将一个对象的全部内容复制到从它继承的另一个对象中。 这里是上下文,从中复制值的域对象包含一组自定义类型 Xref 的对象。该自定义类型有一
org.apache.commons.beanutils.BeanUtils: BeanUtils.populate(Object bean, Map properties); Populate th
嗨,仍然学习一些java概念。很抱歉,如果这是一个愚蠢的问题 我在 jar 里有一个类。我正在使用反射动态地将它加载到我的类路径中。然后我像这样调用类构造函数方法: File jar
我正在尝试实现一些在我的实体和 DTO 之间进行转换的东西。 我有 DTO 的基类(称为模型): public class BaseModel implements Model { @Over
我使用PropertyUtils.copyProperties从Apache Commons BeanUtils在两个bean之间复制属性,现在遇到一个问题:两个bean中有同名字段,一个是Long类
我有一段代码,我使用 BeanUtils.copyProperities(dest, orig) 将一个类的相似属性复制到另一个类。然而。这是行不通的。我收到错误: 线程“main”中的异常 java
我想将 bean 类转换为映射(key=成员的名称,value=成员的值)。 我正在使用方法 BeanUtils.describe(beanClass); (编辑:我正在使用commons-beanu
我正在考虑使用 Apache BeanUtils 来管理我项目中的一些数据结构。该任务是针对仅在运行时已知的任意路径从列表中删除项。 我想我可以使用 BeanUtils 通过这样的调用将项目设置为 n
我是一名优秀的程序员,十分优秀!