java POJO 对象的属性拷贝有没好方法?
DTO、VO 需要转换大量属性,纯手写虽然能够保证属性对应,但实在是费手指,加了字段之后代码分散也不好维护,有没比较好的方法可以自动化一点?
这个我专业,有三个方案,先简单说结论
BeanUtils
: Spring 框架自带,使用方便,里面使用了全反射操作,性能比下面两种差;BeanCopier
: Cglib 的一个工具类,你用了 Spring 基本可以直接用,内部用了生成字节码的方式,性能很 高,跟 MapStruct 接近,使用方式又跟 BeanUtils 差不多;MapStruct
: 性能最高,其实就是利用 Maven 插件生成了代码,生成的代码用 IDE 可以跳进去,跟你手写效果一样,不过使用的时候要配置插件,要专门写个接口,比上面两种方式用起来繁琐一点,对编译阶段有影响,特别你用了 lombok 需要注意一下插件的先后顺序。至于细节使用,去找官方文档看,我比较喜欢用 BeanCopier