Spring的BeanUtils总结

问题描述: 在使用BeanUtils.copyProperties时出现IllegalArgumentException异常

问题原因: 在使用Spring的BeanUtils的copyProperties方法时,目标对象和源对象的属性类型都要相同,或者是对应的基本类型和包装类型,如果源对象有个字段名称为a的类型是包装类 Integer,而目标对象的名称为a的属性是基本类型int,并且源对象的a属性的值为null,那么就会出现以下异常


BeanUtils.copyProperties执行过程

1.getPropertyDescriptors拿到目标对象的所有字段

2.遍历目标字段的所有字段, getWriteMethod拿到字段的set方法

3.通过字段名获取源对象是否有该字段

4.再通过getReadMethod去拿源对象的get方法

5.如果目标源字段和目标字段相同类型,或者二者是对应的基本类型和包装类型,并且对字段的get/ set方法都是公共方法,就将源对象get的值通过目标对象的set进行赋值.


在使用BeanUtils.copyProperties一定要注意对象类型要匹配,如果源对象和目标对象类型不相同,那么就要注意空值,可能会出现一些异常。

你可能感兴趣的:(Spring的BeanUtils总结)