`
bo_hai
  • 浏览: 564281 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

BeanUtil 中copyProperties分析

阅读更多

1. BeanUtil 类继承了 PropertyUtils 类:源代码:

public class BeanUtil extends PropertyUtils

 

2. 源代码如下,有小部份中文注释:

	/**
	 * override BeanUtils method copyProperties, support not copy null or blank
	 * property
	 *
	 * @param dest
	 * @param src
	 * @throws IllegalAccessException
	 * @throws InvocationTargetException
	 * @throws IllegalArgumentException
	 */

	public static void copyProperties(Object dest, Object src) {
		// 为两个参数时,skipNull 默认为true
		copyProperties(dest, src, true);
	}

	/**
	 * override BeanUtils method copyProperties, support not copy null or blank
	 * property
	 *
	 * @param dest
	 * @param src
	 * @throws IllegalAccessException
	 * @throws InvocationTargetException
	 * @throws IllegalArgumentException
	 */
	public static void copyProperties(Object dest, Object src, boolean skipNull) {
		// Validate existence of the specified beans
		if (dest == null) {
			throw new IllegalArgumentException("No destination bean specified");
		}

		if (src == null) {
			throw new IllegalArgumentException("No origin bean specified");
		}
		// 获取所有src中的属性,存入于数组中
		PropertyDescriptor[] origDescriptors = PropertyUtils
				.getPropertyDescriptors(src);
		
		for (int i = 0; i < origDescriptors.length; i++) {
			// 取出src中属性名
			String name = origDescriptors[i].getName();

			if ("class".equals(name)) {
				continue; // No point in trying to set an object's class
			}

			if (PropertyUtils.isReadable(src, name)
					&& PropertyUtils.isWriteable(dest, name)) {

				Object value = null;
				try {
					// 取出属性的值
					value = PropertyUtils.getSimpleProperty(src, name);
				} catch (Exception e) {
					throw new RuntimeException();
				}

				if (skipNull) {
					if (value == null) {
						continue;
					}
				} else if (value == null){
						value = null;
				}

				try {
					//copyProperties(dest, name, value);
					setProperty(dest, name, value);
				} catch (Exception e) {
					throw new RuntimeException();
				}
			}
		}
	}

  使用方法很简单。

 

1
2
分享到:
评论
1 楼 bo_hai 2011-11-07  
使用PropertyUtils时,需求又下jar文件:
1、log4j.jar、commons-beanutils.jar、commons-logging-commons-logging.jar;

相关推荐

    BeanUtil框架完整包

    BeanUtil框架是一个在Java开发中常用的工具库,主要用于对象属性的获取、设置、拷贝以及类型转换等操作。它的设计目标是简化Java Bean的操作,提高代码的可读性和可维护性。这个“BeanUtil框架完整包”包含了...

    BeanUtil Jar包

    2. **批量属性复制**:BeanUtil还提供了`copyProperties()`方法,用于将一个对象的所有属性复制到另一个对象。这对于创建对象的副本或者进行对象间的数据迁移非常有用,大大减少了手动编写复制代码的工作量。 3. **...

    BeanUtil_Jar包

    在实际应用中,BeanUtil_Jar包的使用场景非常广泛,例如在对象的克隆、数据绑定、属性填充等方面都能看到它的身影。例如,我们可以通过以下方式复制一个JavaBean的所有属性到另一个对象: ```java import org....

    Servlet中对获取网页表单数据自动给JavaBean赋值的BeanUtil工具类

    当然,还有很多其他的工具库,如Spring框架中的`BeanUtils.copyProperties()`,它们都能实现类似的功能。 总的来说,BeanUtil工具类是Java Web开发中的实用工具,它简化了Servlet处理表单数据和JavaBean之间数据...

    BeanUtil与Logging

    下面,我们详细分析一下这两个库在实际开发中的应用场景: 1. **BeanUtil的应用**: - **属性赋值**:BeanUtils的`copyProperties()`方法可以方便地将一个对象的属性值复制到另一个对象,这对于数据传输对象(DTO...

    beanutil的jar包打包

    **标题解析:** ...综上所述,这个"beanutil的jar包打包"涉及到的是Java开发中的模块化、依赖管理和代码复用。通过将这些库打包,开发者可以轻松地在项目中引入这些功能,提高开发效率和代码质量。

    beanutil源代码

    总的来说,"beanutil源代码"和"fileupload"都是Java Web开发中的实用工具,前者简化了JavaBean对象的交互,后者则提供了强大的文件上传处理能力。将两者结合,可以高效地实现复杂的业务逻辑,如用户上传文件并保存...

    commons-beanutil-1.7.0-src

    这个"commons-beanutil-1.7.0-src"压缩包包含了BeanUtils库的源代码,版本号为1.7.0,是开发者理解和自定义此库功能的重要资源。以下是关于Apache Commons BeanUtils库及其1.7.0版本的一些关键知识点: 1. **...

    beanutil资料

    例如,`copyProperties()`方法可以将一个Bean的所有属性值复制到另一个Bean,这在数据绑定和对象克隆场景中非常实用。 `commons-beanutils-core.jar`则包含了BeanUtils库的基础组件,可能包含了一些不依赖于额外库...

    stream操作写法,原版pdf

    .map(user -&gt; BeanUtil.copyProperties(user, UserDTO.class)) .collect(Collectors.toList()); ``` 9. 将 Stream 转换成数组: ```java List&lt;Long&gt; ids = new ArrayList(list.size()); list.stream().skip(from)....

    BeanUtilities工具类使用jar包

    4. 使用`BeanUtilities`填充Bean:通过`BeanUtilities.copyProperties()`方法,将数据源中的键值对映射到Bean的属性上。如果数据源是Map,键应该是Bean属性的名字,值则会被设置到对应的属性上。 5. 错误处理与日志...

    文件上传fileload,beanutils以及io包

    它提供了一种便捷的方式来将表单参数映射到Java Bean的属性上,通过`BeanUtils.copyProperties()`方法,可以将一个包含表单字段的`Map`对象快速转换为Bean实例,大大减少了手动设置Bean属性的工作量。 在实际应用中...

    一种简单的json解析方法

    `BeanUtil.java`可能会包含一个`copyProperties`方法,用于将源对象的属性值复制到目标对象: ```java import org.springframework.beans.BeanUtils; public class BeanUtil { public static , T&gt; T ...

    commons-beanutils.jar

    通过`copyProperties()`方法,我们可以方便地将一个对象的所有属性值复制到另一个对象中,无需手动编写setter和getter方法。 2. **动态属性访问(Dynamic Property Access)**:BeanUtils支持通过字符串形式的属性...

    BeanUtils依赖Jar包与源码.rar

    《BeanUtils:Java开发中的实用工具库》 BeanUtils是Apache Commons项目中的一员,它为Java开发者提供了一套便捷的Bean操作工具。这个压缩包包含了BeanUtils的核心组件`commons-beanutils-1.8.3.jar`以及其依赖的`...

    beanUtils , CopyProperty

    在标题“beanUtils, CopyProperty”中提到的`copyProperties`方法,是BeanUtils库中的核心功能之一,用于在两个JavaBean对象之间复制属性值。这个方法极大地简化了对象之间的数据拷贝,特别是当需要将一个对象的属性...

    用于登录的工具类

    `BeanUtils.copyProperties()` 方法是一个常用的函数,可以将一个对象的属性值复制到另一个对象中,这对于数据模型的映射非常有用。 在描述中提到的 "logging" 可能指的是 `commons-logging`,这也是 Apache ...

    为什么不推荐使用BeanUtils属性转换工具示例详解

    BeanUtils.copyProperties(first, second); for (String each : second.getIds()) { System.out.println(each); } } } ``` 在上面的示例代码中,我们使用Spring的BeanUtils来拷贝A对象的属性到B对象中。但是,...

    commons-beanutils快速封装form表单数据包

    而`commons-beanutil.txt`可能是一个包含使用示例、API文档或者关于这个包的说明文本。 总的来说,Apache Commons BeanUtils是Java开发中的利器,能够帮助开发者减少代码量,提高代码质量,特别是在处理表单数据与...

    java工具类 utils.zip

    8. **BeanUtil.java**:用于Spring框架中的Bean操作,可能包含属性复制、Bean转换等功能。如`copyProperties(Object source, Object target)`可以将源对象的属性复制到目标对象。 9. **FileUtil.java**:文件操作...

Global site tag (gtag.js) - Google Analytics