为啥不建议用BeanUtils.copyProperties拷贝数据

💡 原文中文,约5800字,阅读约需14分钟。
📝

内容提要

在业务开发中,使用BeanUtils.copyProperties方法可以方便地拷贝对象属性,但存在一些常见的坑。首先,属性类型不一致会导致拷贝失败;其次,null值覆盖会导致数据异常;导包错误可能导致拷贝数据异常;查找不到字段引用会导致修改内容难以溯源;内部类数据无法成功拷贝;BeanUtils.copyProperties是浅拷贝;底层实现为反射拷贝效率低。因此,在业务中慎用BeanUtils.copyProperties拷贝数据。

🎯

关键要点

  • 在业务开发中,使用BeanUtils.copyProperties方法可以方便地拷贝对象属性,但存在一些常见的坑。

  • 属性类型不一致会导致拷贝失败,包括同一属性的类型不同和同一字段分别使用包装类型和基本类型。

  • null值覆盖会导致数据异常,拷贝时可能会将目标对象的非null值覆盖为null。

  • 导包错误可能导致拷贝数据异常,需注意使用正确的包。

  • 查找不到字段引用会导致修改内容难以溯源,影响排查效率。

  • 内部类数据无法成功拷贝,即使类型和字段名相同也无法拷贝成功。

  • BeanUtils.copyProperties是浅拷贝,引用类型的属性共享相同的引用,可能导致数据异常。

  • 底层实现为反射拷贝,效率较低,使用set方法性能更优。

  • 因此,在业务中慎用BeanUtils.copyProperties拷贝数据。

➡️

继续阅读