·

这个我专业,有三个方案,先简单说结论

  1. BeanUtils: Spring 框架自带,使用方便,里面使用了全反射操作,性能比下面两种差;
  2. BeanCopier: Cglib 的一个工具类,你用了 Spring 基本可以直接用,内部用了生成字节码的方式,性能很高,跟 MapStruct 接近,使用方式又跟 BeanUtils 差不多;
  3. MapStruct: 性能最高,其实就是利用 Maven 插件生成了代码,生成的代码用 IDE 可以跳进去,跟你手写效果一样,不过使用的时候要配置插件,要专门写个接口,比上面两种方式用起来繁琐一点,对编译阶段有影响,特别你用了 lombok 需要注意一下插件的先后顺序。

至于细节使用,去找官方文档看,我比较喜欢用 BeanCopier