BeanUtils正常使用姿势

141 阅读1分钟

同事使用Spring自带的BeanUtils负值对象属性值时报错

企业微信截图_20230217163933.png

  • 由报错信息可知customerRegion在从source赋值到target的过程中有异常

解决:查看源码

企业微信截图_20230217164127.png 根据图1报错提示,问题出在红框内的这一行 同时发现对象为null不影响赋值

解决2:继续排查

发现target的customerRegion被定义为基础int类型 而source中的customerRegion为Integer类型 并且值为null 相信细心的你已经发现问题了

最终解决:

将int基本类型变为Integer则不会报错

反思:

1.使用BeanUtils假设源类和目标类的字段存在基础数据类型和包装类的区别,并且赋值过程中包装类的值为null。那么会造成转换失败报错。 2.建议大家在定义类字段时减少基础类型的使用,可能会在你不知道的地方发生问题。 并且基础数据类型还会有默认值,当你入库或者条件判断时都会有默认值,可能影响逻辑。

个人建议:

类字段定义使用包装类相关类型