文档章节

APACHE_BEANUILS

无畏的老巨人
 无畏的老巨人
发布于 2017/04/12 11:21
字数 256
阅读 68
收藏 0

beanutils工具类源码分析

public void copyProperties(Object dest, Object orig) throws IllegalAccessException, InvocationTargetException {
1.参数校验
      if(dest == null) {
         throw new IllegalArgumentException("No destination bean specified");
      } else if(orig == null) {
         throw new IllegalArgumentException("No origin bean specified");
      } else {
//打印log
         if(this.log.isDebugEnabled()) {
            this.log.debug("BeanUtils.copyProperties(" + dest + ", " + orig + ")");
         }

         int i;
         String name;
         Object e;
//2.如果是动态构建bean,取出全部属性 copy值到目标bean
         if(orig instanceof DynaBean) {
            DynaProperty[] origDescriptors = ((DynaBean)orig).getDynaClass().getDynaProperties();

            for(i = 0; i < origDescriptors.length; ++i) {
               name = origDescriptors[i].getName();
               if(this.getPropertyUtils().isReadable(orig, name) && this.getPropertyUtils().isWriteable(dest, name)) {
                  e = ((DynaBean)orig).get(name);
                  this.copyProperty(dest, name, e);
               }
            }
//如果数据源bean是Map实例,取出全部属性 copy值到目标bean
         } else if(orig instanceof Map) {
            Map arg7 = (Map)orig;
            Iterator arg9 = arg7.entrySet().iterator();

            while(arg9.hasNext()) {
               Entry arg10 = (Entry)arg9.next();
               String arg11 = (String)arg10.getKey();
               if(this.getPropertyUtils().isWriteable(dest, arg11)) {
                  this.copyProperty(dest, arg11, arg10.getValue());
               }
            }
         } else {
//如果是普通bean,取出全部属性 copy值到目标bean
            PropertyDescriptor[] arg8 = this.getPropertyUtils().getPropertyDescriptors(orig);

            for(i = 0; i < arg8.length; ++i) {
               name = arg8[i].getName();
               if(!"class".equals(name) && this.getPropertyUtils().isReadable(orig, name) && this.getPropertyUtils().isWriteable(dest, name)) {
                  try {
                     e = this.getPropertyUtils().getSimpleProperty(orig, name);
                     this.copyProperty(dest, name, e);
                  } catch (NoSuchMethodException arg6) {
                     ;
                  }
               }
            }
         }

      }
   }

使用到的其他重要类

PropertyUtilsBean ConvertUtilsBean PropertyUtils MethodUtils BeanUtils ConvertUtils DynaBean DynaClass 

© 著作权归作者所有

无畏的老巨人

无畏的老巨人

粉丝 17
博文 89
码字总数 86791
作品 0
宁波
CTO(技术副总裁)
私信 提问
26. 文件系统——源程序的编译安装实例演示(ldd, ldconfig -v)

/源文件安装过程演示/ (1)运行httpd-2.4.12中的configure文件 [root@localhost httpd-2.4.12]# ./configure --prefix=/usr/local/apache --enable-so --enable-rewrite checking for chos......

wuyeyoulanjian
2018/06/26
0
0
1)5.3.0-debug命令表

jdb -Dorg.apache.activemq.UseDedicatedTaskRunner=true -Dactivemq.home=/root/debug-apache-activemq-5.3.0/ -Dactivemq.base=/root/debug-apache-activemq-5.3.0 org.apache.activemq.co......

强子哥哥
2016/08/12
8
0
异常: 2 字节的 UTF-8 序列的字节 2 无效。

详细异常: [plain] view plain copy 十二月 08, 2015 7:16:55 下午 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for servlet [jsp] in context with p......

glen_xu
2016/07/26
2K
0
According to TLD or attribute directive in tag file, attribute items does not accep t any expressions

According to TLD or attribute directive in tag file, attribute items does not accep t any expressions 严重: Servlet.service() for servlet jsp threw exception org.apache.jasper.J......

awbeci
2016/01/15
0
0
一脸懵逼加从入门到绝望学习hadoop之 org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: user=Administrator,

1:初学hadoop遇到各种错误,这里贴一下,方便以后脑补吧,报错如下: 主要是在window环境下面搞hadoop,而hadoop部署在linux操作系统上面;出现这个错误是权限的问题,操作hadoop是虚拟机的主...

别叫小伙
2017/09/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
今天
11
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
今天
7
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
今天
8
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
今天
11
0
实验分析性专业硕士提纲撰写要点

为什么您需要研究论文的提纲? 首先当您进行研究时,您需要聚集许多信息和想法,研究论文提纲可以较好地组织你的想法, 了解您研究资料的流畅度和程度。确保你写作时不会错过任何重要资料以此...

论文辅导员
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部