Spring BeanWrapper应用

BeanWrapper

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

应用

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

场景

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

这时BeanWrapper可以上场了~

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

工具类

/**
     * 复制对象相应的属性
     *
     * @param obj1  被复制的对象
     * @param obj2  复制的对象
     * @param names 属性名称
     * @return T
     * @throws Exception 一旦复制出错将抛出错误
     */
    public static <T> T setObjectProperty(T obj1, T obj2, String... names) throws Exception {
        if (obj1 == null || obj2 == null) {
            throw new Exception("被复制的对象或者复制对象为空");
        }
        if (StringUtils.isEmpty(names)) {
            throw new Exception("属性名称为空");
        }
        BeanWrapper beanWrapper1 = new BeanWrapperImpl(obj1);
        BeanWrapper beanWrapper2 = new BeanWrapperImpl(obj2);
        for (String name : names) {
            beanWrapper2.setPropertyValue(name, beanWrapper1.getPropertyValue(name));
        }
        return obj2;
    }

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

注意

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

BeanWrapper获取属性的方法

在这里插入图片描述

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

发布了212 篇原创文章 · 获赞 30 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/weixin_38336658/article/details/102692711