关于Spring中BeanUtils的一次使用问题记录
2024-09-06 20:29:06
1.问题描述:今天在进行前后端联调的时候,发现商品图片不能正常显示;
2.排查过程:查看浏览器控制台,发现调用接口返回的数据关于图片的字段未返回数据;
然后,又跑了一下Dao层的单元测试,从数据库中拿出数据正常;
那基本确认就是代码中数据转换转丢了,打了下debug,果然如此,在BeanUtils.copyProperties(productInfo, productInfoVO)处转换的问题;
3.原因:图片字段的值未能正确的拷贝过去,是因为两个Bean的icon(图片)字段未对应;
4.动手
log.info("两个对象的比较:{}",productInfo.getProductIcon() == productInfoVO.getProductIcon());
log.info("productInfo的hashcode:{}",productInfo.getProductIcon().hashCode());
log.info("productInfoVO的hashcode:{}",productInfoVO.getProductIcon().hashCode());
icon字段为String类型的,此处显示为同一个对象,所以为浅拷贝;
字段多的Bean转换到字段少的Bean
BeanUtils.copyProperties(productInfo, productInfoVO);
反过来再试下
BeanUtils.copyProperties(productInfoVO, productInfo);
5.总结使用BeanUtils.copyProperties()的注意点:
BeanUtils.copyProperties(productInfo, productInfoVO) 作用:将一个实体的值拷贝到另一个实体,避免了对Bean大量的get,set;
(1)拷贝关系:前面参数的值拷贝到后面参数中,即productInfo拷贝到productInfoVO;apache也有一个BeanUtils,顺序恰好相反;
(2)字段对应:字段要相同,不然会赋值失败;
(3)此处是浅拷贝
最新文章
- char、varchar、nchar、nvarchar的区别
- Hibernate总结(二)
- Codeforces Round #242 (Div. 2) C. Magic Formulas
- LINQ 嵌套查询
- JavaScript基于时间的动画算法
- javascript权威指南笔记--javascript语言核心(四)
- PHP+Apache+MySQL+phpMyAdmin在win7系统下的环境配置
- removing right click context menu options on recycle bin
- Jquery 获取日期date()对象
- nodejs 计算内存使用率
- 学习Cocos2d的博客 --推荐
- jQuery 评分插件(转)
- DataCleaner第一章
- electron打包之真的恶心
- [原]openstack-kilo--issue(十二)openstack-keystone和httpd服务同时占用35357和5000
- TXT文件用法大全【荐】--------按键精灵
- cmd重启服务器,有时不想去机房,并且远程桌面连接登录不上了
- win7.wifi热点
- Canny边缘检测原理及C#程序实现
- C语言预处理命令的使用