zoukankan      html  css  js  c++  java
  • 使用cglib动态创建javabean

    动态创建javabean对于我们进行开发,会有一定的帮助,一下是使用cglib动态创建javabean的一个例子:

    先贴上code:

    package com.dalong.CreateCode;

    import java.util.Iterator; import java.util.Map; import java.util.Set;

    import net.sf.cglib.beans.BeanGenerator; import net.sf.cglib.beans.BeanMap;

    public class CodeCreate {

      /**      * 实体Object      */ 

       private  Object object = null;   

       /**      * 属性map      */    

       private  BeanMap beanMap = null;

       public CodeCreate()

      {        

         super();    

       }         

       @SuppressWarnings("unchecked")    

       public CodeCreate(Map propertyMap) {      

        this.object = generateBean(propertyMap);     

        this.beanMap = BeanMap.create(this.object);   

       }     

       /**      * 给bean属性赋值      * @param property 属性名      * @param value 值      */    

        public void setValue(String property, Object value)

       {    

         beanMap.put(property, value); 

       }     

       /**      * 通过属性名得到属性值      * @param property 属性名      * @return 值      */    

        public Object getValue(String property)

       {    

         return beanMap.get(property);   

        }      

        /**      * 得到该实体bean对象      * @return      */    

         public Object getObject()

        {   

           return this.object;    

        }   

         /**     * @param propertyMap     * @return     */ 

         @SuppressWarnings("unchecked") 

          private Object generateBean(Map propertyMap)

        {    

            BeanGenerator generator = new BeanGenerator();    

           Set keySet = propertyMap.keySet();     

           for (Iterator i = keySet.iterator();

           i.hasNext();)

          {     

             String key = (String) i.next();   

             generator.addProperty(key, (Class) propertyMap.get(key));     

          } 

        //     generator.addProperties(generator, propertyMap);    // 简写的方式

            return generator.create();   

        } 

      }

    一下是测试的代码:

       

    package com.dalong.Test;

    import java.lang.reflect.Method; import java.util.HashMap;

    import com.dalong.CreateCode.CodeCreate;

    public class TestClassMain {

     public TestClassMain() {   // TODO Auto-generated constructor stub  }

     /**   * @param args   * @throws ClassNotFoundException   */  

    public static void main(String[] args) throws ClassNotFoundException

    {   

    // TODO Auto-generated method stub  

      // 设置类成员属性         

    HashMap propertyMap = new HashMap();       

          propertyMap.put("id", Class.forName("java.lang.Integer"));        

          propertyMap.put("name", Class.forName("java.lang.String"));      

          propertyMap.put("address", Class.forName("java.lang.String"));          

         // 生成动态 Bean         

         CodeCreate bean = new CodeCreate(propertyMap);   

            // 给 Bean 设置值       

         bean.setValue("id", new Integer(123));       

         bean.setValue("name", "454");          

         bean.setValue("address", "789");          

        // 从 Bean 中获取值,当然了获得值的类型是 Object        

         System.out.println("  >> id      = " + bean.getValue("id"));   

         System.out.println("  >> name    = " + bean.getValue("name"));     

         System.out.println("  >> address = " + bean.getValue("address"));       

         // 获得bean的实体       

         Object object = bean.getObject();      

          // 通过反射查看所有方法名      

         Class clazz = object.getClass();       

         Method[] methods = clazz.getDeclaredMethods();     

             for (int i = 0; i < methods.length; i++) {     

             System.out.println(methods[i].getName());     

          } 

       }

    }

         代码比较简单,在实际的使用过程中可以进行改进。

  • 相关阅读:
    Knockout应用开发指南 第八章:简单应用举例(2)
    微软ASP.NET站点部署指南(7):生产环境部署
    Knockout应用开发指南 第七章:Mapping插件
    《Microsoft Sql server 2008 Internals》读书笔记第九章Plan Caching and Recompilation(6)
    《Microsoft Sql server 2008 Internals》读书笔记第九章Plan Caching and Recompilation(5)
    《Microsoft Sql server 2008 Internals》读书笔记第九章Plan Caching and Recompilation(3)
    《Microsoft Sql server 2008 Internals》读书笔记第九章Plan Caching and Recompilation(9)
    《Microsoft Sql server 2008 Internals》读书笔记第九章Plan Caching and Recompilation(8)
    Microsoft Visual Studio .NET 2003 引导程序插件下载地址(非官方)
    Vs2010在没有安装SQL Server 2005/2008 Express时如何连接MDF数据文件?
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/3461047.html
Copyright © 2011-2022 走看看