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)此处是浅拷贝

关于Spring中BeanUtils的一次使用问题记录的更多相关文章

  1. Spring中可以复用的工具类&特性记录

    Spring 里有用工具类: GenericTypeResolver 解析泛型类型.核心逻辑还是调用 ResolvableTypeResolvableType 解析泛型类型 BeanWrapper 利 ...

  2. Spring中的BeanUtils与apache commons中的BeanUtils用法[1]

    1. 前言 在开发过程中,经常遇到把要给一个bean的属性赋给另外一个bean.最笨的方法是每个属性都单独写一个,聪明的方法是应用反射写一个工具方法.考虑到这个需求基本每个程序员都会遇到,那么一定已经 ...

  3. Spring中使用的设计模式

    目录 Spring使用的设计模式 1.单例模式 2.原型模式 3.模板模式 4.观察者模式 5.工厂模式 简单工厂模式 工厂方法模式 6.适配器模式 7.装饰者模式 8.代理模式 9.策略模式   S ...

  4. 0000 - Spring 中常用注解原理剖析

    1.概述 Spring 框架核心组件之一是 IOC,IOC 则管理 Bean 的创建和 Bean 之间的依赖注入,对于 Bean 的创建可以通过在 XML 里面使用 <bean/> 标签来 ...

  5. Spring 中常用注解原理剖析

    前言 Spring 框架核心组件之一是 IOC,IOC 则管理 Bean 的创建和 Bean 之间的依赖注入,对于 Bean 的创建可以通过在 XML 里面使用 <bean/> 标签来配置 ...

  6. Spring中Bean的实例化与DI的过程

    引言 前文我们介绍了关于如何学习Spring的源码以及解析了spring中加载配置文件注册Beandefinition的过程.今天我们继续学习DI的过程. 创建实例和DI过程 IOC和DI都是对spr ...

  7. spring中BeanPostProcessor之二:CommonAnnotationBeanPostProcessor(01)

    在上篇博客中分享了InstantiationAwareBeanPostProcessor接口中的四个方法,分别对其进行了详细的介绍,在文末留下了一个问题,那就是postProcessPropertie ...

  8. 谈谈Spring中的对象跟Bean,你知道Spring怎么创建对象的吗?

    本系列文章: 读源码,我们可以从第一行读起 你知道Spring是怎么解析配置类的吗? 配置类为什么要添加@Configuration注解? 推荐阅读: Spring官网阅读 | 总结篇 Spring杂 ...

  9. 这篇文章,我们来谈一谈Spring中的属性注入

    本系列文章: 读源码,我们可以从第一行读起 你知道Spring是怎么解析配置类的吗? 配置类为什么要添加@Configuration注解? 谈谈Spring中的对象跟Bean,你知道Spring怎么创 ...

随机推荐

  1. usb接口类型 简单分类辨识

    usb接口类型 简单分类辨识 - [相似百科] 庆欣 0.0 4 人赞同了该文章 1. 先放图,随着越来越多的接触智能设备,会遇到各种各样的usb接口,对于很多人来说,接口类型只有:usb接口,安卓接 ...

  2. mooc-IDEA 使用界面--001

    IntelliJ IDEA 快捷键应用小结 1.Ctrl+E :  打开最近所有浏览过的文件 2.Ctrl+Shift+E :打开最近所有编辑修改过的文件 3.ctrl+shift+Backspace ...

  3. 子页面中ifram高度自使用

    HTML: <iframe id="mainframe" name="mainframe" style="width: 100%; border ...

  4. 如何理解ajax的同步和异步?

    对于如下一段代码: var dataJson = {"ABC":'testABC'}; $.ajax({                url: "/MonkeyServ ...

  5. 前端项目中使用jsencrypt进行字段加密

    前端项目中使用jsencrypt进行字段加密. 使用步骤:①获取公钥②实例化对象③设置公钥④将所需数据进行加密然后返回. 进行一个简单的封装如下 /** * npm install jsencrypt ...

  6. 【报错】springboot thymeleaf超链接跳转 404

    Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as ...

  7. python基础-9__import__ 反射和面向对象基础 self 封装 继承(多继承顺序) 多态

    一 反射 python中的反射功能是由以下四个内置函数提供:hasattr.getattr.setattr.delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员.获取成员.设置成员.删 ...

  8. web 前端2 html css一些小问题技巧

    html css一些小问题技巧 1 对于儿子块float后,父亲块如果没内容就不见了,如何让父亲块依然跟随飘起了的儿子块撑起来呢?? 用到的属性after方法  公共方法作为继承即可. 1.1  方法 ...

  9. solr 安装与配置

    1. Solr安装与配置 1.1什么是Solr 大多数搜索引擎应用都必须具有某种搜索功能,问题是搜索功能往往是巨大的资源消耗并且它们由于沉重的数据库加载而拖垮你的应用的性能. 这就是为什么转移负载到一 ...

  10. 2018年牛客多校寒假 第四场 F (call to your teacher) (图的连通性)

    题目链接 传送门:https://ac.nowcoder.com/acm/contest/76/F 思路: 题目的意思就是判断图的连通性可以用可达性矩阵来求,至于图的存储可以用邻接矩阵来储存,求出来可 ...