BeanUtils的copyProperty和cglib的区别。克隆,clone,拷贝

cglib区分int和Integer

    // BeanUtils.copyProperties(roomTypeListBean, roomStatus);
     

cglib性能好
缺点:有时候会报类转换异常???(发现:当copy的两个类有继承关系!。解决:用回BeanUtils.copyProperties)

java.lang.ClassCastException: class com.cowain.base.modules.ehr.entity.flow.EhrTaskBean cannot be cast to class com.cowain.base.modules.ehr.entity.flow.EhrTaskBean (com.cowain.base.modules.ehr.entity.flow.EhrTaskBean is in unnamed module of loader org.springframework.boot.devtools.restart.classloader.RestartClassLoader @59d3c0ed; com.cowain.base.modules.ehr.entity.flow.EhrTaskBean is in unnamed module of loader 'app')
   //BeanUtils性能拉胯。CglibUtil带缓存功能(-2s)
   //  EhrTaskBean ehrTaskBean=new EhrTaskBean();
       // CglibUtil.copy(roomTypeListBean, ehrTaskBean);
        HotelDetailsVo hotelDetailsVo = CglibUtil.copy(hotelBaseinfoEntities.get(0), HotelDetailsVo.class);

类似???问题BeanUtils、PropertiesUtils、BeanCopier copyProperties 出现ClassCastException
可能原因:
BeanCopier会通过字节码生成动态代理对象,代理对象拷贝属性时会检查类型,类型不同认为是不同的属性,就不进行赋值拷贝了

在这里插入图片描述
CGLIB中BeanCopier源码实现

奇了喵了个咪的怪了:
这个copy报错(位于subPassFlow):

   TaskBean taskBean =  applyDtoJsonResult.getData().getTaskBean();
 EhrTaskBean ehrTaskBean = CglibUtil.copy(taskBean, EhrTaskBean.class);

这样不报错:(我只能认为是难道当有会签节点时,返回的taskBean 有何不同?无啊,也不是List<>。真是奇了喵了个咪的怪了)

   TaskBean taskBean = applyDtoJsonResult.getData().getTaskBean();
        log.info("审批通过流程中心返回的数据为:" + applyDtoJsonResult.toString());
        log.info("----开始转换----");
        EhrTaskBean ehrTaskBean = CglibUtil.copy(taskBean, EhrTaskBean.class);
        log.info("----转换成功?----");

配合食用:
深拷贝的实现

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值