项目中遇到的情况是: 文件解析完之后将文件放在一个pojo里面,形如:
private String ext1; //WX ADD 11/19 private String ext2; //WX ADD 11/19 private List<FilePnlPojo> panelInfo; private List<FileDefectPojo> defectInfo; private List<FilePatternPojo> patternInfo;
最终这份文件是要保存到 数据库中的,我总不能一个一个调用set方法set到对应的实体类里面吧?
Spring的BeanUtils的copyProperties大大简化了set的动作?
为什么说是简化了呢?
因为copyProperties总有不能完成你想要的一切,例如转格式/判空/其他逻辑处理....
这时候先使用copyProperties copy一份你想要的对象,再配合上自己的业务逻辑将对象的部分属性处理,最终保存实体类来达到自己的目的。
注意点
1.Spring的BeanUtils的CopyProperties方法需要对应的属性有getter和setter方法;
2.如果存在属性完全相同的内部类,但是不是同一个内部类,即分别属于各自的内部类,则spring会认为属性不同,不会copy;
3.泛型只在编译期起作用,不能依靠泛型来做运行期的限制;
4.最后,spring和apache的copy属性的方法源和目的参数的位置正好相反,所以导包和调用的时候都要注意一下。
5.对象和实体类的set 方法逻辑需要保证一致,否则出现问题会查到你怀疑人生。