• 关于org.apache.commons.beanutils.BeanUtils类与org.springframework.beans.BeanUtil类的区别


    在一次项目中,由于没有留意到这两个包的不同,导致使用类的copyProperties()方法时,出现了Null key for a Map not allowed in JSON的错误,查看源码发现这两个方法的参数是对换过来了。

    1:springframework.beans中的copyProperties的参数是(源头,目标)

    2:commons.beanutils中的copyProperties的参数是(目标,源头),注意用这个方法时会有两个Exceptions:IllegalAccessException, InvocationTargetException,用这个方法时需要处理这两个异常。

    查了下有篇博文是将这两者区别的,下面是链接地址:

    https://www.cnblogs.com/dongfangshenhua/p/7099970.html

    引用如下:

    1)两者的copyProperties方法参数位置不同

      org.springframework.beans.BeanUtils:  copyProperties(sourceDemo, targetDemo)

      org.apache.commons.beanutils.BeanUtils:  copyProperties(targetDemo, sourceDemo)

    2)要求两个Bean的属性名相同,且有对应的setXxx方法和getXxx方法。其实底层原理是使用sourceDemo的getXxx方法和targetDemo的setXxx方法

    3)sourceDemo有的属性而targetDemo没有的属性,不会封装到targetDemo对象中;

       targetDemo有的属性而sourceDemo没有的属性,会封装到targetDemo中,数据为默认值(注意基本类型默认值与引用类型默认值不同)

    4)类型转换问题

      a)基本类型与其对应的封装类型可以相互转换

      b)org.springframework.beans.BeanUtils与org.apache.commons.beanutils.BeanUtils对于String和Date类型转换的情况是不同的,具体看以下案例

  • 相关阅读:
    centos 搭建 sftp 服务器
    apt-get 安装时,提示lock被占用
    Kafka
    设计模式-分类
    SparkSQL – 从0到1认识Catalyst
    Spark分布式计算引擎
    Spark存储管理
    Spart RDD
    硬件工程师的你也不想一辈子画图、调板子吧!!!
    如何理解IPD+CMMI+Scrum一体化研发管理解决方案之Scrum篇
  • 原文地址:https://www.cnblogs.com/Eric-F/p/9681996.html
Copyright © 2020-2023  润新知