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会通过字节码生成动态代理对象,代理对象拷贝属性时会检查类型,类型不同认为是不同的属性,就不进行赋值拷贝了
奇了喵了个咪的怪了:
这个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("----转换成功?----");
配合食用:
深拷贝的实现