Java工具类 BeanUtils库介绍以及对象拷贝

Posted java李杨勇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java工具类 BeanUtils库介绍以及对象拷贝相关的知识,希望对你有一定的参考价值。

前言介绍:

BeanUtils 工具由 Apache 软件组织编写,提供给我们开发者使用 主要解决的问题是:把对象的属性数据封装到对象中。 我们在开发中经常会从各种配置文件中读取相应的数据,需要明白的一点是从配置文件中读取到的数据都是 String ,但是很显然我们的应用程序中不仅仅有String 一种数据类型,比如:基本数据类型(int、 double char float 等),还有自定义数据类型(引用数据类型) 面临的一个问题就是讲字符串类型转换为各种具体的数据类型,该怎么办呢? 有两种方法解决: 1.首先判断需要的数据类型,然后对字符串类型调用相应的方法,将其转换为我们想要的类型

2. 使用BeanUtils工具

上面的两种方法,第一种存在的问题是太过于繁琐,每次都要进行大量的类型转换, Apache 软件基金会给我们提供了第二种方法,使用其提供的BeanUtils 工具,具体的说只需要知道其中的两个方法就能实现类型的转换,很简单,降低了编程的难度。

使用步骤:

导入jar: 要想使用别人开发的工具必须将其jar 包导入到程序中。
<dependency>
     <groupId>commons-beanutils</groupId>
     <artifactId>commons-beanutils</artifactId>
     <version>1.9.0</version>
</dependency>

主要方法:

 Beanutils工具在使用时几乎只用到以下几个方法.

BeanUtils.setProperty(bean, name, value);

其中bean是指你将要设置的对象,name指的是将要设置的属性(写成属性 名”,value(从配置文件中读取到到的字符串值)

BeanUtils。copyProperties(bean, name, value)
和上面的方法是完全一样的。使用哪个都可以。
ConvertUtils.register(Converter converter , ..)。
当需要将 String 数据转换成引用数据类型(自定义数据类型时),需要使用此方法实现转换。
BeanUtils.populate(bean,Map)
其中 Map 中的 key 必须与目标对象中的属性名相同,否则不能实现拷贝。
BeanUtils.copyProperties(newObject,oldObject),

实现对象的拷贝

具体使用:

 根据业务场景进行对象的拷贝赋值以及拆分等

 public TopicErrMsVO getDetails(Long id) 
        TopicErrMs topicErrMs = this.get(id);
        TopicErrMsVO errMsVO = new TopicErrMsVO();

        BeanUtils.copyProperties(topicErrMs, errMsVO);
        User user = userBiz.get(topicErrMs.getUserId());

        UserVo userVo = new UserVo();

        userVo.setOrgName(orgBiz.get(user.getOrgId()).getName());
        BeanUtils.copyProperties(user, userVo);
        errMsVO.setUserVo(userVo);

        Topic topic = topicBiz.get(topicErrMs.getTopicId());
        TopicVO topicVO = new TopicVO();
        topicVO.setTopicType(TopicTypeEnum.getByCode(topic.getTopicType()).getName());
        topicVO.setSourceName(SourceEnum.getByCode(topic.getSourceName()).getName());
        //单选题
        String topicType = topic.getTopicType().toString();
        if (topicType.equals(ExamConstants.TOPIC_TYPE_2) || topicType.equals(ExamConstants.TOPIC_TYPE_3)) 
            String selectItems = topicSelectBiz.get(topic.getId()).getSelectItems();
            String[] arr = selectItems.split("&");
            topicVO.setSelectItems(arr);
        
        BeanUtils.copyProperties(topic, topicVO);
        errMsVO.setTopicVO(topicVO);

        return errMsVO;
    

以上是关于Java工具类 BeanUtils库介绍以及对象拷贝的主要内容,如果未能解决你的问题,请参考以下文章

对象拷贝类PropertyUtils,BeanUtils,BeanCopier的技术沉淀

DBUtils与BeanUtils以及Gson工具类

BeanUtil工具类的使用

java学习--基础知识进阶第十三天--反射机制的概述和字节码对象的获取方式反射操作构造方法成员方法成员属性JavaBean的概述&BeanUtils的使用自定义BeanUtils工

JAVA中反射机制五(JavaBean的内省与BeanUtils库)

commons-beanutils使用介绍