public class MyBeanUtils extends org.apache.commons.beanutils.BeanUtils { public static void copyBeanNotNull2Bean(Object databean,Object tobean)throws Exception { PropertyDescriptor origDescriptors[] = PropertyUtils.getPropertyDescriptors(databean); for (int i = 0; i < origDescriptors.length; i++) { String name = origDescriptors[i].getName(); // String type = origDescriptors[i].getPropertyType().toString(); if ("class".equals(name)) { continue; // No point in trying to set an object's class } if (PropertyUtils.isReadable(databean, name) && PropertyUtils.isWriteable(tobean, name)) { try { Object value = PropertyUtils.getSimpleProperty(databean, name); if(value!=null){ copyProperty(tobean, name, value); } } catch (java.lang.IllegalArgumentException ie) { logger.error(ie,ie); // Should not happen } catch (Exception e) { logger.error(e,e); // Should not happen } } } } }
使用这段代码进行javabean的复制,并且srcBean为null的字段,不进行复制。
这段代码测试环境是正常的,在生产环境下,运行一段时间后(大概有1个月的样子),就会出现很诡异的问题,javaBean里面Integer,Long等类型的 复制后字段变成null了(源javaBean和目标javaBean该字段都不不为空的情况下)。
正在持续监测中...
注:copyProperty 方法是继承于org.apache.commons.beanutils.BeanUtils
===================================================================
2014/04/27
问题终于解决了!
原因是项目引用的另一个第三方jar包里,对BeanUtils注册了全局的转换器
ConvertUtils.register(new xxx.DateConverter(), Date.class); ConvertUtils.register(new xxx.BigDecimalConverter(), BigDecimal.class); ConvertUtils.register(new xxx.IntegerConverter(), Integer.class);
而这三个转换器里面因为某种原因,存在这样的逻辑:
即srcBean和targetBean中类型相同的字段,返回null
这个第三方jar也使用了apache beanUtils,不过用途并不是复制bean,所以使用了这种逻辑的转换。
结果就是造成了我的项目中 一旦使用了这个第三方jar的功能之后,转换器被注册,之后便出现了文中开头的问题,也就是所谓的“运行一段时间后,便出现bean复制null的情况”。
相关推荐
赠送jar包:commons-beanutils-1.9.4.jar; 赠送原API文档:commons-beanutils-1.9.4-javadoc.jar; 赠送源代码:commons-beanutils-1.9.4-sources.jar; 赠送Maven依赖信息文件:commons-beanutils-1.9.4.pom; ...
commons-beanutils-1.8.0 jar包: 1.commons-beanutils-1.8.0.jar 2.commons-beanutils-1.8.0-javadoc.jar 3.commons-beanutils-1.8.0-sources.jar 4.commons-beanutils-bean-collections-1.8.0.jar 5.commons-...
赠送jar包:commons-beanutils-1.9.4.jar; 赠送原API文档:commons-beanutils-1.9.4-javadoc.jar; 赠送源代码:commons-beanutils-1.9.4-sources.jar; 赠送Maven依赖信息文件:commons-beanutils-1.9.4.pom; ...
本资料共包含以下附件: commons-beanutils-1.8.0.rar commons-beanutils-1.8.3.rar
解决办法是把commons-beanutils中的org/apache/commons/collections删除,这里上传一个改好可以直接使用的。
赠送jar包:commons-beanutils-1.9.3.jar; 赠送原API文档:commons-beanutils-1.9.3-javadoc.jar; 赠送源代码:commons-beanutils-1.9.3-sources.jar; 包含翻译后的API文档:commons-beanutils-1.9.3-javadoc-...
赠送jar包:commons-beanutils-1.9.3.jar; 赠送原API文档:commons-beanutils-1.9.3-javadoc.jar; 赠送源代码:commons-beanutils-1.9.3-sources.jar; 包含翻译后的API文档:commons-beanutils-1.9.3-javadoc-...
赠送jar包:commons-beanutils-1.7.0.jar; 赠送原API文档:commons-beanutils-1.7.0-javadoc.jar; 赠送源代码:commons-beanutils-1.7.0-sources.jar; 赠送Maven依赖信息文件:commons-beanutils-1.7.0.pom; ...
赠送jar包:commons-beanutils-1.9.1.jar; 赠送原API文档:commons-beanutils-1.9.1-javadoc.jar; 赠送源代码:commons-beanutils-1.9.1-sources.jar; 赠送Maven依赖信息文件:commons-beanutils-1.9.1.pom; ...
commons-beanutils, Apache Commons Beanutils的镜像 Apache Commons BeanUtils Apache Commons BeanUtils提供了一个 easy-to-use,但它围绕反射。文档更多信息可以在公共BeanUtils主页上找到。 可以浏览 JavaDoc插
commons-beanutils-core-1.8.3.jar
赠送jar包:commons-beanutils-1.7.0.jar; 赠送原API文档:commons-beanutils-1.7.0-javadoc.jar; 赠送源代码:commons-beanutils-1.7.0-sources.jar; 赠送Maven依赖信息文件:commons-beanutils-1.7.0.pom; ...
BeanUtils工具由Apache软件基金组织编写,提供给我们使用,主要解决的问题是:把对象的属性数据封装到对象中。在整个J2EE的编程过程中,我们经常会从各种配置文件中读取相应的数据,需要明白的一点是从配置文件中...
配置服务端所需要的jar文件,包括commons-logging commons-beanutils commons-lang ezmorph json-lib-2.4-jdk15 commons-collections-3.2.1。
Commons-beanutils jar包,比较新希望对大家能有帮助
commons-beanutils (1.7.0 -1.9.2) 6个jar包. 资源共享,有需要其他jar包的可以在评论留言,看到后我会陆续上传。
commons-beanutils所有版本(1.0-1.9.2).zip
两个jar包,commons-beanutils-1.9.1.jar 和 commons-logging-1.1.3.jar
commons-beanutils-1.8.3,jar.dom4j-2.0.2.jar,commons-logging-1.1.1.jar等
本人曾经花费很多积分在各处下载的jar包,现将所用过得常用jar包打包下载...axis.jar,poi-3.17.jar,mysql-connector-java-5.0.4-bin.jar,java.util学习包,commons-beanutils与commons-logging,apache-cxf-3.2.1 包