使用Dozer进行对象copy,某些字段没有被copy的排查

先说我这边的原因:目标实体中字段与相应的get方法的返回类型不一致,会导致获取字段时剔除该字段,见方org.dozer.classmap.generator.BeanMappingGenerator#apply,见destFieldNames,当然,srcFieldNames中可能也存在相同问题。实际是个很简单的问题,但没有往这方面考虑。

一些dozer中常见的方法调用轨迹。

mapGeneral中会先将原对象的字段都收集到classMap中的fieldMaps中,这个作为copy对象的模板。

org.dozer.MappingProcessor#getClassMap中会对初次加载的映射对象进行解析,在本地内存进行缓存,后续相同源对象不再进行字段解析。

字段解析方法:ClassMapBuilder#createDefaultClassMap——>ClassMapBuilder#generateMapping

加载自定义映射:org.dozer.DozerBeanMapper#loadCustomMappings,该map是有本地缓存。

字段解析入口方法:org.dozer.classmap.ClassMappings#find

使用Dozer进行对象copy,某些字段没有被copy的排查相关推荐

  1. 使用 Dozer 进行对象的映射

    Dozer简介 Dozer 是 Java Bean 到 Java Bean 的映射器,他以递归的方式将数据从一个对象复制到另一个对象.Dozer 支持简单属性映射.双向映射.隐式映射以及递归映射.使用 ...

  2. java8新特性: lambda表达式:直接获得某个list/array/对象里面的字段集合

    java8新特性: lambda表达式:直接获得某个list/array/对象里面的字段集合 比如,我有一张表: entity Category.java service CategoryServic ...

  3. Python天天美味(22) - 拷贝对象(深拷贝deepcopy与浅拷贝copy)

    Python中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块. 1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象. 2. copy.deep ...

  4. java对象序列化去掉字段_使用序列化查找对象中的脏字段

    java对象序列化去掉字段 假设您正在开发一个将对象自动保存到数据库中的框架. 您需要检测两次保存之间所做的更改,以便仅保存已修改的字段. 如何检测脏场. 最简单的方法是遍历原始数据和当前数据,并分别 ...

  5. Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)

    http://www.jb51.net/article/15714.htm 1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象. 2. copy.deepcopy 深拷贝 拷贝 ...

  6. 简单的循环以及从接口获取数组对象的一个字段集合

    1.简单的循环字段循环 if (this.videolist) {console.log(111);for (let j = 0; j < this.videolist.length; j++) ...

  7. stream根据某个字段去重(对象的某个字段去重)

    stream根据某个字段去重(对象的某个字段去重) 方案一 重写实体equals.hashcode方法 [重要] 使用infoList.stream().distinct().collect(Coll ...

  8. js给对象添加变量属性 js 更改对象中的属性名 数组对象中每个对象添加一个字段-map用法和forEarch用法

    js给对象添加变量属性 & js 更改对象中的属性名 & 数组对象中每个对象添加一个字段-map用法和forEarch用法 1.js给对象添加变量属性 1.js创建一个对象或者在原有对 ...

  9. java反射实现自定义json转对象方法-忽略字段大小写、字段个数

    java反射实现自定义json转对象方法-忽略字段大小写.字段个数 开发过程中经常会遇到json转对象,可以使用FastJson或者Gson自带的工具类进行转换,但当遇到json与对象属性名称大小写不 ...

最新文章

  1. Redis6.0新版本开始引入多线程,到底改善了什么
  2. php遍历父元素,PHP遍历函数将单个数组转换为具有子元素的嵌套数组 – 基于父标识...
  3. 每秒处理240万帧游戏画面,AI训练成本降低80%,谷歌开源RL并行计算框架
  4. 怎样在android平台上使用第三方jar包
  5. 【参数】REMOTE_LOGIN_PASSWORDFILE参数三种取值及其行为特性分析
  6. 【python】装饰器
  7. HTML+CSS+JS实现 ❤️个人相册封面卡片❤️
  8. python语言的三个主要特点_python干货|新总结的4个python语言的特点,这几个细节值得关注...
  9. slam和orbslam3环境配置
  10. Linux 进程之如何查看进程详情?
  11. ios 扇形 按钮_iOS 画圆弧或扇形
  12. python库:Pandas学习笔记
  13. Office Web App
  14. 价值链价值流分析方法对成本控制的启示(zt)
  15. 一位4年的JAVA工程师的面试总结:面试应该先从注意整体的节奏,然后从这些地方下手(数据结构、算法、JVM、多线程、数据库)
  16. 在element ui中如何自定义el-date-picker的宽度 笔记
  17. 魔兽显血改建工具的制作及源码
  18. jq 组装数组_Jquery数组操作
  19. OpenCV实战:检测胶圈是否闭合
  20. 三星Samsung SF-531P 驱动

热门文章

  1. 黑马程序员-Linux系统编程-01
  2. ​力扣解法汇总2315. 统计星号
  3. (转)如何应用MTCNN和FaceNet模型实现人脸检测及识别
  4. java的基本数据类型有什么特点,java八大基本数据类型
  5. 关于《算法(第四版 谢路云译)》标准库In、Out、StdOut和StdIn的正确配置和调用经验分享(以BinarySearch二分查找算法为例)
  6. 大数据报告|70%的中国人过劳死危险,其中有你吗?
  7. iOS15.6和iOS15.5哪个更省电 iOS15.6建不建议升级
  8. ​UG塑胶模具设计结构分析是如何挤压成型的
  9. ~ 如何用C++自制一个日麻游戏 ~(一)大体框架构建 § 2 数据结构
  10. docker build 18.04 镜像出现 Configuring tzdata - Please select the geographic area in which you live