springboot版本升级的坑,BeanUtils的copyProperties方法值丢失问题

使用springboot的2.7.5版本进行beanCopy的copy结果:

 

其中region对象中都只有一个字段

在2.7.5版本中,如果list元素中,被拷贝源对象和目标对象使用的对象不是一个object的话,就会出现copy丢失的情况,测试时,即使list中的对象名相同,如果不是同一个(不同系统的不同对象,对象名,字段都一直),也都会出现copy都是,即list中必须是同一个对象才会被copy成功。

使用springboot的2.3.2.RELEASE版本进行beanCopy的copy结果:

 

同样的场景,值可以被copy过来,test2中的list使用的是region2,test1中使用的是region1。

结论是:版本升级后,两个bean之间的copy,如果有list,那么list的对象必须为同一个对象才能把值也copy过去,不然会出现值丢失的情况。

原因:老版本因为泛型类型擦除,List<T> 做copy处理时拿到的实际是List对象,spring校验会通过,故可成功。

新版本spring添加了泛型类型校验,不通过的直接忽略了。

解决办法:

(1)两个bean对象之间的copy,如果有list对象类型的,确保里面对象属于同一个。

(2)也可以用json转换的方式进行bean对象的互相转换,避免丢失数据。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值