你还在用 BeanUtils.copyProperties 拷贝?小心有坑
儒雅程序员阿鑫你还在用 BeanUtils.copyProperties 拷贝?小心有坑
目前Java实体映射工具比较多,如手写转换器、Apache BeanUtils、Spring BeanUtils、Dozer、Orika、ModelMapper、JMapper、MapStruct 等。其中手写转换器带来的人工成本较高,尤其是当转换对象属性较多,或者有嵌套属性时,费时费力,且容易遗漏出错,而且随着对象的迭代,转换器中的代码也要变动,所以通常我们还是会采用自动化的转换器。
根据网上的性能压测数据来看,JMapper 和 MapStruct 的性能最好;根据易用性来讲 MapStruct 最好,所以我们就使用 MapStruct 来实现转换器。
MapStruct 是Java实体映射工具,是一个代码生成器,它基于约定优于配置方法,极大地简化了 Java bean 类型之间映射的实现。
生成的映射代码使用简单的方法调用,因此速度快、类型安全且易于理解。
《Java实体映射工具MapStruct详解》技术专栏将详细介绍Java 实体映射工具 MapStruct的使用。
Java实体映射工具MapStruct
MapStruct是一个Java注解处理器,用于为Java bean类生成类型安全的和性能良好的映射器。MapStruct属于在编译期,生成调用get/set方法进行赋值的代码,生成对应的java文件。在编译期间消耗少许的时间,换取运行时的高性能。
MapStruct Support插件在使用MapStruct生成bean映射代码的项目中提供了一些帮助。
MapStruct的性能基本上优于BeanUtils一个数量级。关于对象间复制应该是比较常见的了,一个对象Object 可以衍生出DO、DTO、VO等,建议使用MapStruct替换BeanUtils。
MapStruct是一个Java注解处理器,用于为Java bean类生成类型安全的和性能良好的映射器。MapStruct属于在编译期,生成调用get/set方法进行赋值的代码,生成对应的java文件。在编译期间消耗少许的时间,换取运行时的高性能。
MapStruct Support插件在使用MapStruct生成bean映射代码的项目中提供了一些帮助。
根据小编进行的性能测试数据,MapStruct的性能基本上优于BeanUtils一个数量级。关于对象间复制应该是比较常见的了,一个对象Object 可以衍生出DO、DTO、VO等,建议使用MapStruct替换BeanUtils。
关于MapStruct工具的详细介绍可以参考《Java实体映射工具MapStruct详解》技术专栏,专栏提供完整示例项目代码下载。