BeanUtils.copyProperties的使用(深拷贝,浅拷贝)

注:

这里说的是这里  spring的BeanUtils.copyProperties。

 

场景

开发中经常遇到,把父类的属性拷贝到子类中。通常有2种方法:

  • 一个一个set

  • 用BeanUtils.copyProperties

很显然BeanUtils更加方便,也美观很多。

那么任何情况都能使用BeanUtils么,当然不是。

 

BeanUtils是深拷贝,还是浅拷贝?

是浅拷贝。

  • 浅拷贝:只是调用子对象的set方法,并没有将所有属性拷贝。(也就是说,引用的一个内存地址)

  • 深拷贝:将子对象的属性也拷贝过去。

 

什么情况适合用BeanUtils

如果都是单一的属性,那么不涉及到深拷贝的问题,适合用BeanUtils。

 

有子对象就一定不能用BeanUtils么

并不绝对,这个要区分考虑:

  • 子对象还要改动。

  • 子对象不怎么改动。

虽然有子对象,但是子对象并不怎么改动,那么用BeanUtils也是没问题的。

 

dest ,src 还是 src,dest

常见的BeanUtils有2个:

  • Spring有BeanUtils

  • apache的commons也有BeanUtils。

区别如下:

这2个用哪个都行,但是要注意区别。因为他们2个的src和dest是正好相反的,要特别留意。

posted @ 2022-06-15 10:40  r1-12king  阅读(482)  评论(0编辑  收藏  举报