`
djytotti
  • 浏览: 13299 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Common BeanUtils 学习与测试

    博客分类:
  • Java
阅读更多
首先构造2个Bean的类:

Person类
package com.djy.bean;

import java.util.List;
import java.util.Map;

public class Person {
	 private String name;
	 private String sex;
	 private int age;
	 private Address address;
	 private List goods;
	 private Map contact;
	 
	 public Person() {
	 }
	 
	 public Person(String name) {
	  this.name = name;
	 }
	 
	 public Person(String name,String sex) {
	  this.name = name;
	  this.sex = sex;
	 }
	 
	 public String getName() {
	  return this.name;
	 }
	 
	 public void setName(String name) {
	  this.name = name;
	 }
	 
	 public String getSex() {
	  return this.sex;
	 }
	 
	 public void setSex(String sex) {
	  this.sex = sex;
	 }
	 
	 public int getAge() {
	  return this.age;
	 }
	 
	 public void setAge(int age) {
	  this.age = age;
	 }
	 
	 public Address getAddress() {
	  return this.address;
	 }
	 
	 public void setAddress(Address address) {
	  this.address = address;
	 }
	 
	 public List getGoods() {
	  return this.goods;
	 }
	 
	 public void setGoods(List goods) {
	  this.goods = goods;
	 }
	 
	 public Map getContact() {
	  return this.contact;
	 }
	 
	 public void setContact(Map contact) {
	  this.contact = contact;
	 }
	 
	 public void sayHello() {
	  System.out.println("Hello World!");
	 }
	 
	 public void f(String str) {
	  System.out.println("Person.f()..." + str);
	 }
	 
	 public String toString() {
	  return "Person.toString()...";
	 }
	}



Address类:
package com.djy.bean;

public class Address {
	 private String province;
	 private String city;
	 private String street;
	 private String zipcode;
	 
	 public String getProvince() {
	  return this.province;
	 }
	 
	 public void setProvince(String province) {
	  this.province = province;
	 }
	 
	 public String getCity() {
	  return this.city;
	 }
	 
	 public void setCity(String city) {
	  this.city = city;
	 }
	 
	 public String getStreet() {
	  return this.street;
	 }
	 
	 public void setStreet(String street) {
	  this.street = street;
	 }
	 
	 public String getZipcode() {
	  return this.zipcode;
	 }
	 
	 public void setZipcode(String zipcode) {
	  this.zipcode = zipcode;
	 }
	}



然后是一个测试类:
package com.djy.bean;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConstructorUtils;
import org.apache.commons.beanutils.MethodUtils;
import org.apache.commons.beanutils.PropertyUtils;

public class BeanUtilsTest {

	public static void main(String[] args) throws Exception {
		Address address = new Address();
		address.setProvince("GuangDong");
		address.setCity("GuangZhou");
		address.setStreet("Tian He");
		address.setZipcode("510000");

		List goods = new ArrayList();
		goods.add("sporting");
		goods.add("singing");
		goods.add("dancing");

		Map contact = new HashMap();
		contact.put("student", "Ken");
		contact.put("teacher", "Mafai");

		Person person = new Person();
		person.setName("Mike");
		person.setSex("male");
		person.setAge(25);
		person.setAddress(address);
		person.setGoods(goods);
		person.setContact(contact);

//		BeanUtilsTest.cloneBean(person);
//		BeanUtilsTest.copyProperties(person);
//		BeanUtilsTest.propertyUtilsCopyProperties(person);
//		BeanUtilsTest.copyProperty(person);
//		BeanUtilsTest.describe(person);
//		BeanUtilsTest.propertyUtilsDescribe(person);
//		BeanUtilsTest.populate(person);
//		BeanUtilsTest.getArrayProperty(person);
//		BeanUtilsTest.getIndexedProperty(person);
//		BeanUtilsTest.getMappedProperty(person);
//		BeanUtilsTest.getNestedProperty(person);
//		得到一个bean中指定属性的值,相当于getter
//		System.out.println(BeanUtils.getProperty(person,"name"));
//		修改一个bean中指定属性的值,相当于setter
//		BeanUtils.setProperty(person,"name","Tom");
//		System.out.println(BeanUtils.getProperty(person,"name"));
//		System.out.println("--------------------------------------");
//			     
//		BeanUtilsTest.invokeMethod();
//		System.out.println("--------------------------------------");
//		BeanUtilsTest.getAccessibleMethod();
//		System.out.println("--------------------------------------");
//		BeanUtilsTest.invokeConstructor();
//		System.out.println("--------------------------------------");
//		BeanUtilsTest.getAccessibleConstructor();

	}

	// BeanUtils.cloneBean()--克隆目标bean
	public static void cloneBean(Person person) throws Exception {
		Person p = (Person) BeanUtils.cloneBean(person);
		System.out.println(p.getAddress().getCity());
		System.out.println(person.getAddress().getCity());
		p.getAddress().setCity("FoShan");
		System.out.println("---------------------------");
		System.out.println(p.getAddress().getCity());
		System.out.println(person.getAddress().getCity());
		System.out.println(p.getAddress() == person.getAddress());
	}

	// BeanUtils.copyProperties()--拷贝目标bean中属性的值,能进行类型转换
	public static void copyProperties(Person person) throws Exception {
		Person p = new Person();
		BeanUtils.copyProperties(p, person);
		System.out.println(p.getAddress().getCity());
		System.out.println(person.getAddress().getCity());
		p.getAddress().setCity("FoShan");
		System.out.println("---------------------------");
		System.out.println(p.getAddress().getCity());
		System.out.println(person.getAddress().getCity());
		System.out.println(p.getAddress() == person.getAddress());
	}

	// PropertyUtils.copyProperties()--拷贝目标bean中属性的值,不能进行类型转换
	public static void propertyUtilsCopyProperties(Person person)
			throws Exception {
		Person p = new Person();
		PropertyUtils.copyProperties(p, person);
		System.out.println(p.getAddress().getCity());
		System.out.println(person.getAddress().getCity());
		p.getAddress().setCity("FoShan");
		System.out.println("---------------------------");
		System.out.println(p.getAddress().getCity());
		System.out.println(person.getAddress().getCity());
		System.out.println(p.getAddress() == person.getAddress());
	}

	// BeanUtils.copyProperty()--拷贝一个值给目标Bean的一个属性,能进行类型转换
	public static void copyProperty(Person person) throws Exception {
		Person p = new Person();
		BeanUtils.copyProperty(p, "age", "12");
		System.out.println(p.getAge());
	}

	// BeanUtils.describe()--得到一个bean的所有描述,返回的是一个map
	public static void describe(Person person) throws Exception {
		Map map = BeanUtils.describe(person);
		Set set = map.keySet();
		for (Iterator it = set.iterator(); it.hasNext();) {
			Object o = it.next();
			System.out.println(o + ": " + map.get(o));
		}
		System.out.println("--------------------------------------");
		// Collection c = map.values();
		// for(Object o : c) {
		// System.out.println(o);
		// }
	}

	// PropertyUtils.describe()--得到一个bean的所有描述,返回的是一个map
	public static void propertyUtilsDescribe(Person person) throws Exception {
		Map map = PropertyUtils.describe(person);
		Set set = map.keySet();
		for (Iterator it = set.iterator(); it.hasNext();) {
			Object o = it.next();
			System.out.println(o + ": " + map.get(o));
		}
		System.out.println("--------------------------------------");
		// Collection c = map.values();
		// for(Object o : c) {
		// System.out.println(o);
		// }
		// System.out.println("----------------------------");
	}

	// BeanUtils.populate()--使用一个map为bean赋值
	public static void populate(Person person) throws Exception {
		Map map = PropertyUtils.describe(person);
		Person p = new Person();
		BeanUtils.populate(p, map);
		System.out.println(p.getName());
		System.out.println(p.getSex());
		System.out.println(p.getAge());
		System.out.println(p.getAddress().getProvince());
		System.out.println(p.getGoods().get(0));
		System.out.println(p.getGoods().get(1));
		System.out.println(p.getGoods().get(2));
		System.out.println(p.getContact().get("student"));
		System.out.println(p.getContact().get("teacher"));
		System.out.println("--------------------------------------");
	}

	// BeanUtils.getArrayProperty()--将目标bean的一个属性的值转换成一个字符串数组
	public static void getArrayProperty(Person person) throws Exception {
		String[] array = BeanUtils.getArrayProperty(person, "goods");
		for (String str : array) {
			System.out.println(str);
		}
	}

	// BeanUtils.getIndexedProperty()--可以检索目标bean中数组或集合类型的属性指定索引的值
	public static void getIndexedProperty(Person person) throws Exception {
		System.out.println(BeanUtils.getIndexedProperty(person, "goods[0]"));
		System.out.println(BeanUtils.getIndexedProperty(person, "goods", 1));
	}

	// BeanUtils.getMappedProperty()--可以检索目标bean中具有map类型的属性中对应键的值
	public static void getMappedProperty(Person person) throws Exception {
		System.out.println(BeanUtils.getMappedProperty(person,
				"contact(student)"));
		System.out.println(BeanUtils.getMappedProperty(person, "contact",
				"teacher"));
	}

	// BeanUtils.getNestedProperty()--得到目标bean中嵌套属性的值
	public static void getNestedProperty(Person person) throws Exception {
		System.out.println(BeanUtils.getNestedProperty(person,
				"address.province"));
	}

	// MethodUtils.invokeMethod()--动态调用方法
	public static void invokeMethod() throws Exception {
		// MethodUtils.invokeMethod(Object arg1,String arg2,Object[] arg3)
		// arg1 一个bean的名称
		// arg2 指定bean的方法名
		// arg3 方法中的参数列表
		MethodUtils.invokeMethod(new Person(), "sayHello", new Object[] {});
		// MethodUtils.invokeMethod(Object arg1,String arg2,Object arg3)
		// arg1 一个bean的名称
		// arg2 指定bean的方法名
		// arg3 方法中的参数
		MethodUtils.invokeExactMethod(new Person(), "f", "hello");
		;
	}

	// MethodUtils.getAccessibleMethod()--得到方法
	public static void getAccessibleMethod() throws Exception {
		// MethodUtils.getAccessibleMethod(Class clazz,String methodName,Class[]
		// parameterTypes)
		// clazz 一个bean的类对象
		// methodName bean中的方法名
		// parameterTypes 方法中参数的类型列表
		System.out.println(MethodUtils.getAccessibleMethod(Person.class, "f",
				new Class[] { String.class }));
		System.out.println(MethodUtils.getAccessibleMethod(Person.class, "f",
				String.class));
	}

	// ConstructorUtils.invokeConstructor()
	public static void invokeConstructor() throws Exception {
		// ConstructorUtils.invokeConstructor(Class clazz,Object[] args)
		// clazz 一个bean的类对象
		// args bean的构造函数的参数列表
		Person p1 = (Person) ConstructorUtils.invokeConstructor(Person.class,
				new Object[] {});
		Person p2 = (Person) ConstructorUtils.invokeConstructor(Person.class,
				"Tom");
		System.out.println(p2.getName());
	}

	// ConstructorUtils.getAccessibleConstructor()
	public static void getAccessibleConstructor() throws Exception {
		// ConstructorUtils.getAccessibleConstructor(Class clazz,Class[]
		// parameterTypes)
		// clazz 一个bean的类对象
		// parameterTypes bean的构造函数的参数类型列表
		System.out.println(ConstructorUtils.getAccessibleConstructor(
				Person.class, String.class));
		System.out.println(ConstructorUtils.getAccessibleConstructor(
				Person.class, new Class[] { String.class, String.class }));
	}
}


分享到:
评论

相关推荐

    commons-beanutils-1.9.4-API文档-中英对照版.zip

    赠送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; ...

    common-beanutils和common-logging

    common-beanutils下载地址:http://commons.apache.org/proper/commons-beanutils/ common-logging现在地址:http://commons.apache.org/proper/commons-logging/

    Commons-beanutils jar包

    Commons-beanutils jar包,比较新希望对大家能有帮助

    beanutils高手学习笔记,重要的学习笔记,想提高的看

    beanutils高手学习笔记,重要的学习笔记,想提高的看

    beanUtils包与源码

    beanutils,方便servlet开发的一大利器,附带源代码,学习一下

    commons-beanutils (1.7.0 -1.9.2)6个

    commons-beanutils (1.7.0 -1.9.2) 6个jar包. 资源共享,有需要其他jar包的可以在评论留言,看到后我会陆续上传。

    commons-beanutils-1.8.0 jar包下载

    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-...

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

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

    JavaBean和beanutils工具类的学习

    JavaBean和beanutils工具类的学习

    commons-beanutils-1.8.3

    commons-beanutils-1.8.3.rar官方正版免费版,BeanUtils主要提供了对于JavaBean进行各种操作。 个包主要提供用于操作JavaBean的工具类,Jakarta-Common-BeanUtils的主要功能都在这个包里实现。

    commons-beanutils

    commons-beanutils.jar包及源码文件,方便使用

    BeanUtils_beanutils_

    BeanUtils 是 Apache commons组件的成员之一,主要用于简化JavaBean封装数据的操作。它可以给JavaBean封装一个字符串数据,也可以将一个表单提交的所有数据封装到JavaBean中。使用第三方工具,需要导入jar包:

    beanutils-1.9.3-bin

    BeanUtils是由Apache公司开发的针对操作JavaBean的工具包。...但是由Apache公司开发的BeanUtils会更常用,同时,BeanUtils还需要配合第三方日志工具来使用,这里我们同样使用Apache公司的common logging

    BeanUtils工具

    BeanUtils工具是一种方便我们对JavaBean进行操作的工具,是Apache组织下的产品。beanUtils 可以便于对javaBean的属性、对象进行赋值,beanUtils可以将一个MAP集合的数据拷贝到一个javabean对象中。

    commons-beanutils-1.9.4-API文档-中文版.zip

    赠送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; ...

    BeanUtils教程

    BeanUtils教程BeanUtils教程BeanUtils教程BeanUtils教程BeanUtils教程BeanUtils教程

    BeanUtils_1.8.3帮助文档

    BeanUtils_1.8.3最新帮助文档,希望对给位有用。。。

    BeanUtils工具 .jar 包

    BeanUtils工具 .jar 包使用很简单 可以参考博客java学习笔记——javaweb之BeanUtils、EL、JSTL

    commons-beanutils-1.9.3

    BeanUtils工具由Apache软件基金组织编写,提供给我们使用,主要解决的问题是:把对象的属性数据封装到对象中。在整个J2EE的编程过程中,我们经常会从各种配置文件中读取相应的数据,需要明白的一点是从配置文件中...

    commons-beanutils-1.7.0.jar-解决commons-beanutils和commons-collections重复类

    解决办法是把commons-beanutils中的org/apache/commons/collections删除,这里上传一个改好可以直接使用的。

Global site tag (gtag.js) - Google Analytics