为啥不建议用BeanUtils.copyProperties拷贝数据
💡
原文中文,约5800字,阅读约需14分钟。
📝
内容提要
在业务开发中,使用BeanUtils.copyProperties方法可以方便地拷贝对象属性,但存在一些常见的坑。首先,属性类型不一致会导致拷贝失败;其次,null值覆盖会导致数据异常;导包错误可能导致拷贝数据异常;查找不到字段引用会导致修改内容难以溯源;内部类数据无法成功拷贝;BeanUtils.copyProperties是浅拷贝;底层实现为反射拷贝效率低。因此,在业务中慎用BeanUtils.copyProperties拷贝数据。
🎯
关键要点
- 在业务开发中,使用BeanUtils.copyProperties方法可以方便地拷贝对象属性,但存在一些常见的坑。
- 属性类型不一致会导致拷贝失败,包括同一属性的类型不同和同一字段分别使用包装类型和基本类型。
- null值覆盖会导致数据异常,拷贝时可能会将目标对象的非null值覆盖为null。
- 导包错误可能导致拷贝数据异常,需注意使用正确的包。
- 查找不到字段引用会导致修改内容难以溯源,影响排查效率。
- 内部类数据无法成功拷贝,即使类型和字段名相同也无法拷贝成功。
- BeanUtils.copyProperties是浅拷贝,引用类型的属性共享相同的引用,可能导致数据异常。
- 底层实现为反射拷贝,效率较低,使用set方法性能更优。
- 因此,在业务中慎用BeanUtils.copyProperties拷贝数据。
➡️