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一定要注意对象类型要匹配,如果源对象和目标对象类型不相同,那么就要注意空值,可能会出现一些异常。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。