同事使用Spring自带的BeanUtils负值对象属性值时报错
- 由报错信息可知customerRegion在从source赋值到target的过程中有异常
解决:查看源码
根据图1报错提示,问题出在红框内的这一行
同时发现对象为null不影响赋值
解决2:继续排查
发现target的customerRegion被定义为基础int类型 而source中的customerRegion为Integer类型 并且值为null 相信细心的你已经发现问题了
最终解决:
将int基本类型变为Integer则不会报错
反思:
1.使用BeanUtils假设源类和目标类的字段存在基础数据类型和包装类的区别,并且赋值过程中包装类的值为null。那么会造成转换失败报错。 2.建议大家在定义类字段时减少基础类型的使用,可能会在你不知道的地方发生问题。 并且基础数据类型还会有默认值,当你入库或者条件判断时都会有默认值,可能影响逻辑。
个人建议:
类字段定义使用包装类相关类型