首页 > 其他分享 >CGLIB动态生成一个bean

CGLIB动态生成一个bean

时间:2023-03-12 11:36:47浏览次数:36  
标签:www throws BeanGenerator 生成 bean CGLIB import class

 

在没有类的情况下,生成一个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}

 

标签:www,throws,BeanGenerator,生成,bean,CGLIB,import,class
From: https://www.cnblogs.com/wangbin2188/p/17207829.html

相关文章

  • MyBatisPlus3.x代码生成器生成实体类自定义需要填充的字段
    场景 生成代码时数据库中某些公共字段比如修改人、修改时间等在生成实体时需要自动添加@TableField(fill=FieldFill.INSERT)等自动填充注解。实现在上面代码生成器的基础......
  • java动态代理和CGLIB
    参考:https://www.jianshu.com/p/cbd4c1ad8a75上一篇我们利用jdk的动态代理实现了一个简单的注解处理器,可以自动给一个button添加指定的监听器.但是jdk的动态代理有一个......
  • 单例bean与原型bean的区别
    在使用Spring开发时,Spring提供了五种scope,分别为singleton,prototype,request,session,globalsession。上图为各个scope描述的官方文档截图。Spring在一开始的时候只提供了s......
  • 通俗理解文本生成的常用解码策略
    目录:背景简介解决的问题解码策略StandardGreedySearchBeamSearchSamplingTop-kSamplingSamplingwithTemperatureTop-p(Nucleus)Sampling代码快览......
  • routers自动生成路由
    1.routers自动生成路由:1_1.routers自动生成路由代码:#自动生成路由第一步:导入router模块fromrest_frameworkimportrouters#自动生成路由第二步:有两个类,实例化得到对......
  • bean的创建
    1.spring启动2.配置扫描3.生成筛选单例BeanDefinition合并4.加载类5.实例化前6.推断构造方法7.实例化8.实例化后9.填充属性(变量、依赖注入@Autowire、@Resource)10......
  • 把本地js文件生成本地可访问的url
    1、下载nginx压缩包2、解压3、进入文件夹nginx->conf->nginx.conf,查看第36行的端口号4、把自己本地的js文件放进文件夹nginx->html中5、拼接ip+端口号+js文件名即可访......
  • Spring-DI(依赖注入)及Bean的作用域
    DI(依赖注入)1、构造器注入前面已经说过了2、set方式注入【重点】依赖注入:Set注入依赖:bean对象的创建依赖于容器注入:bean对象中的所有属性,由容器来注入【环境......
  • Spring-Bean的自动装配
    Bean的自动装配自动装配是Spring满足bean依赖的一种方式Spring会在上下文中自动寻找,并自动给bean装配属性在Spring中有三种装配的方式在xml中显式的配置在java中显......
  • Spring:简述一下bean的生命周期吧?
    bean的生命周期是指它在ioc容器中从创建到销毁的整个过程。 <hr> 一、生命周期1、实例化,为对象分配内存。2、构造方法。3、属性注入,set注入。4......