刚刚在网上了解了一下BeanUtils和Digester,感觉比较方便,用起也安逸!希望以后有机会在多了解哈。。。
org.apache.commons.beanutils包包里的东东
1.BeanUtils.copyProperties(po,vo);
这个是浅拷贝,共享属性的。只是对属性进行复制,所以要先new出对象。
2.BeanUtils.setProperties(vo,properties_name,properties_value);
设置或修改属性值。
3.BeanUtils.populate(po,Map<name,value>);
将一个map的值填充到一个javabean中。
走进org.apache.commons.digester
1.配置rules.xml文件绑定javabean
- <digester-rules>
- <pattern value="解析时的标志">
- <pattern value="同上">
- <object-create-rule classname="本标志绑定的类" />
- <set-next-rule methodname="创建绑定类到方法名" />
- <set-properties-rule /><!--设置类属性-->
- </pattern>
- </pattern>
- </digester-rules>
写了两个po简单测试了一下下,一个Male,一个Female,都继承至Human抽象类。比较简单,就不负代码,直接上测试类
BeanUtilsTest:
- package dao;
- import java.util.HashMap;
- import java.util.Map;
- import org.apache.commons.beanutils.BeanUtils;
- import org.junit.BeforeClass;
- import org.junit.Test;
- import entity.Female;
- import entity.Male;
- public class BeanUtilsTest {
- // 世界上有两种人
- private static Male m;
- private static Female f;
- private static Map<String, String> nature;
- @BeforeClass
- public static void beforeClass() {
- System.out.println("----------变性前------------");
- m = new Male();
- m.setId(1648);
- m.setName("Apache");
- nature = new HashMap<String, String>();
- nature.put("name", "Apache");
- System.out.println(m);
- }
- @Test
- public void testSimpleCopy() throws Exception {
- System.out.println("----------变性手术------------");
- f = new Female();
- BeanUtils.copyProperties(f, m);
- System.out.println(f);
- }
- @Test
- public void testSetPop() throws Exception {
- System.out.println("----------改变属性值------------");
- BeanUtils.setProperty(f, "name", "Jakarta");
- System.out.println(f);
- }
- @Test
- public void testPopulate() throws Exception {
- System.out.println("----------X射线下的原型------------");
- Male re=new Male();
- BeanUtils.populate(re, nature);
- System.out.println(re);
- }
- }
DigesterTest:
- package dao;
- import org.apache.commons.digester.Digester;
- import org.apache.commons.digester.xmlrules.DigesterLoader;
- import org.junit.Test;
- import entity.Company;
- public class DigesterTest {
- @Test
- public void testDynamicParse() throws Exception {
- Company company = new Company();
- Digester digester = DigesterLoader.createDigester(DigesterTest.class
- .getClassLoader().getResource("rules.xml"));
- digester.push(company);
- Object obj = digester.parse(Digester.class.getClassLoader()
- .getResource("company.xml"));
- System.out.println(obj);
- }
- }
结果是entity.Company@82c01f。
汗,不会载图!!!