Spring BeanWrapper应用

素颜马尾好姑娘i 2023-05-31 04:55 115阅读 0赞

文章目录

  • BeanWrapper
  • 应用
    • 场景
    • 复制对应对象的相应属性到另一个对象,并且保留之前的属性值
  • BeanWrapper获取属性的方法

BeanWrapper

看看spring官网怎么说的:
在这里插入图片描述
解读
BeanWrapper可以获取,设置bean的属性

应用

像对象复制,一般会使用BeanUtils,BeanCopier等等

场景

  1. 但是对于一些特殊的情景就难以上手了,比如我现在有一个对象里面有些属性有值,
  2. 另一个相同class 的对象也有另一部分没有值的属性,我想把它们set到另一个对象
  3. 里面,这个时候上面两个工具类就失去意义。

这时BeanWrapper可以上场了~

复制对应对象的相应属性到另一个对象,并且保留之前的属性值

工具类

  1. /**
  2. * 复制对象相应的属性
  3. *
  4. * @param obj1 被复制的对象
  5. * @param obj2 复制的对象
  6. * @param names 属性名称
  7. * @return T
  8. * @throws Exception 一旦复制出错将抛出错误
  9. */
  10. public static <T> T setObjectProperty(T obj1, T obj2, String... names) throws Exception {
  11. if (obj1 == null || obj2 == null) {
  12. throw new Exception("被复制的对象或者复制对象为空");
  13. }
  14. if (StringUtils.isEmpty(names)) {
  15. throw new Exception("属性名称为空");
  16. }
  17. BeanWrapper beanWrapper1 = new BeanWrapperImpl(obj1);
  18. BeanWrapper beanWrapper2 = new BeanWrapperImpl(obj2);
  19. for (String name : names) {
  20. beanWrapper2.setPropertyValue(name, beanWrapper1.getPropertyValue(name));
  21. }
  22. return obj2;
  23. }

names为属性的名称,如果这两个类没有这些属性名将会抛出异常!

注意

obj1和obj2都必须有set方法,也可以是@ Data注解,不然是没有权限去读取和写滴~

BeanWrapper获取属性的方法

在这里插入图片描述

我们可以看到可以通过set方法后面的单词小写获取值,当然如果属性是对象,通过对象.属性名获取对象里面的属性,还有数组以及map

发表评论

表情:
评论列表 (有 0 条评论,115人围观)

还没有评论,来说两句吧...

相关阅读