`
buddie
  • 浏览: 185560 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于使用Spring的BeanUtils复制属性时Boolean类型无法复制的问题

    博客分类:
  • Java
 
阅读更多

spring-beans版本5.0.12

JDK版本1.8.0_181

 

使用BeanUtils.copyProperties(Object source, Object target)进行属性复制时,遇到了Boolean类型无法复制的问题,一步步的跟进了java的rt.jar包中的Instrospector类中,发现第513行只认boolean类型

if (argCount == 0) {
                        if (name.startsWith(GET_PREFIX)) {
                            // Simple getter
                            pd = new PropertyDescriptor(this.beanClass, name.substring(3), method, null);
                        } else if (resultType == boolean.class && name.startsWith(IS_PREFIX)) {
                            // Boolean getter
                            pd = new PropertyDescriptor(this.beanClass, name.substring(2), method, null);
                        }
                    }

 

所以,是不支持Boolean类型的复制,只支持boolean类型的复制

分享到:
评论

相关推荐

    Bean复制的几种框架性能比较(Apache BeanUtils、PropertyUtils,Spring BeanUtils,Cglib BeanCopier

    综合来看,Apache BeanUtils和PropertyUtils适合简单的Bean复制,它们易于理解和使用,但在大规模复制时性能不佳。Spring BeanUtils在Spring生态系统中提供了更多灵活性,但性能仍然受限于反射。Cglib BeanCopier在...

    使用BeanUtils操作属性的一个小坑

    问题在于,BeanUtils在进行属性复制时,会尝试通过反射调用getter和setter方法,如果JavaBean的属性名称与实际getter或setter方法不完全匹配,或者属性类型不兼容,就会导致异常。例如,假设我们有一个属性名为`...

    Spring-BeanUtils工具类

    4. **空值处理**:BeanUtils还考虑到了JavaBean属性可能为null的情况,通过`ignoreProperties()`方法,可以在复制属性时忽略指定的null属性,避免因为空值导致的异常。 在实际使用中,我们需要引入Apache Commons ...

    JSP 开发之Spring BeanUtils组件使用

    在这种情况下,使用`BeanUtils.copyProperties`方法复制属性时,目标对象newPeople的birth属性同样保持了原有的非null值。 通过以上测试可以发现,BeanUtils组件在进行属性复制时会忽略null值,只有当源对象和目标...

    BeanUtils jar包+源码

    3. **类型转换**:BeanUtils内部使用了`PropertyUtils`类来处理属性的类型转换,当源对象和目标对象的属性类型不一致时,它会尝试进行自动类型转换。然而,这种转换并不总是成功,对于一些复杂类型的转换,可能需要...

    BeanUtilsBean对象复制使用(类型可以自动转化)

    然而,需要注意的是,这种方法也存在一些潜在问题,比如可能会覆盖掉原本存在于目标对象中的值,或者在类型转换失败时抛出异常。因此,在实际使用中,我们需要根据具体需求和场景权衡其优缺点。 总之,Apache ...

    beanutils 复制文件

    beanutils 复制文件 beanutils 复制文件 beanutils 复制文件 beanutils 复制文件 beanutils 复制文件 beanutils 复制文件 beanutils 复制文件 beanutils 复制文件 beanutils 复制文件

    commons-beanutils-1.9.4

    - **复制属性**:`copyProperties()`方法可以将一个JavaBean对象的属性值复制到另一个对象,这在处理模型对象时非常有用。 - **默认值**:当尝试获取不存在的属性或者转换失败时,可以设置默认值来避免异常。 - *...

    BeanUtils所需的包

    例如,当源对象和目标对象的属性类型不完全匹配时,BeanUtils会尝试使用ConversionService进行类型转换。 在使用BeanUtils时,需要注意一些潜在的问题。首先,由于BeanUtils是通过反射机制来操作对象的属性,所以...

    这是BeanUtils的jar包

    BeanUtils最核心的好处在于:我们在编码时,并不需要知道我们处理的JavaBeans具体是什么类型,有哪些属性,这些信息是可以动态获取的,甚至我们都可以不必去关心事实上是否存在这样一个具体的JavaBean类。...

    beanutils 的jar包

    3. **类型转换**:BeanUtils在设置属性值时,会尝试自动进行类型转换。这意味着你可以传递任何类型的值,只要它能被转换为目标属性的类型,BeanUtils就会处理这个转换过程。 4. **异常处理**:BeanUtils在执行过程...

    commons-beanutils-1.8.0

    例如,在Web开发中,使用Struts或Spring MVC框架时,BeanUtils可以帮助快速实现模型和视图之间的数据交换。 值得注意的是,`commons-beanutils-1.8.0.jar`依赖于`commons-logging.jar`。这个库是Apache Commons ...

    beanutils使用

    在Java开发中,Apache Commons BeanUtils是一个非常实用的工具库,它提供了许多便捷的方法来操作JavaBeans,使得在处理对象属性时变得更加简单。本篇文章将深入探讨如何使用BeanUtils库,特别是通过它将Map对象转换...

    BeanUtils包

    4. **类型匹配:** BeanUtils在进行属性复制时,如果源属性类型与目标属性类型不一致,会尝试自动转换。但在某些情况下,这种转换可能会失败,需要预先进行类型检查。 5. **版本兼容性:** 不同版本的BeanUtils可能...

    BeanUtils开发包

    通过调用`BeanUtils.copyProperties()`方法,可以将一个JavaBean对象的所有属性值复制到另一个JavaBean对象中,即使两个对象的属性类型不同,BeanUtils也能尝试进行自动转换。例如,从字符串转为整型,或者从日期...

    beanutils的jar包

    在使用BeanUtils时,最基础的操作是属性的复制。例如,我们有一个源对象`sourceBean`和目标对象`targetBean`,它们具有相同的属性结构,我们可以使用`BeanUtils.copyProperties()`方法来快速完成两个对象属性的复制...

    beanutils JAR包下载

    然而,使用BeanUtils时也需要注意一些问题: - 性能:由于依赖于反射,频繁使用BeanUtils可能导致性能损耗,特别是在大规模数据处理时。 - 安全性:反射允许访问私有属性,这可能带来安全风险,因此在处理敏感数据...

    commons-beanutils-1.8.2-src官方源文件,是你学习beanutils工具的必备资料

    - **类型转换**:BeanUtils具备自动类型转换能力,当设置属性值时,如果类型不匹配,它会尝试进行转换。例如,字符串转换为整型、浮点型等。 - **动态Bean访问**:对于那些没有getter和setter方法但有公共字段的类...

    beanUtils jar 包,还包括source和doc

    // 复制属性 BeanUtils.copyProperties(destUser, srcUser); System.out.println(destUser.getName()); // 输出:John System.out.println(destUser.getAge()); // 输出:30 } } ``` 3. **源码解析** ...

Global site tag (gtag.js) - Google Analytics