CGLIB动态生成一个bean

 

在没有类的情况下,生成一个bean,之前是不敢想象的,现在cglib做到了

复制代码
import com.alibaba.fastjson.JSON;
import net.sf.cglib.beans.BeanGenerator;
import net.sf.cglib.beans.BeanMap;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class Bean {
    /**
     * 使用CGLIB的BeanGenerator动态的创建了一个Bean对象,使用addProperty方法可以添加一个属性,在添加属性的同时BeanGenerator会自动生成其Getting、Setting方法。
     *
     * @param args
     * @throws NoSuchMethodException
     * @throws InvocationTargetException
     * @throws IllegalAccessException
     */
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        BeanGenerator bean=new BeanGenerator();
        bean.addProperty("name",String.class);
        bean.addProperty("age",Integer.class);
        Object o = bean.create();
        Method m1=o.getClass().getMethod("setName",String.class);
        m1.invoke(o,"www");
        Method m2 = o.getClass().getMethod("getName");
        System.out.println(JSON.toJSONString(o));
        System.out.println(m2.invoke(o));

        BeanMap beanMap = BeanMap.create(o);
        System.out.println(beanMap);
        
    }
}
复制代码

输出

{"name":"www"}
www
{name=www, age=null}

 

posted @   Mars.wang  阅读(159)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
历史上的今天:
2021-03-12 计算机系统、文化、概论、导论类经典PDF电子书合集
2021-03-12 大数据hadoop,spark,flink等经典电子书PDF下载
点击右上角即可分享
微信分享提示