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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值