java动态的生成bean
2018-01-02 10:31
393 查看
最近做一个需求,需求中的bean只用于生成一次json使用,所以想通过配置来动态的生成,查了一下,java还真有这个实现。
java动态的生成javabean,只能生成属性和对应的set/get方法,不能生成其他的方法。
代码不难懂,有需要的自己复制。
java动态的生成javabean,只能生成属性和对应的set/get方法,不能生成其他的方法。
import org.assertj.core.internal.cglib.beans.BeanGenerator; import org.assertj.core.internal.cglib.beans.BeanMap; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; /** * Created by wangpengzhi1 on 2018/1/2. */ public class BeanCeater { public static void main(String[] args) throws ClassNotFoundException { System.out.println("Generate JavaBean"); Map properties = new HashMap(); properties.put("id", Class.forName("java.lang.Integer")); properties.put("name", Class.forName("java.lang.String")); properties.put("address", Class.forName("java.lang.String")); Object stu = generateObject(properties); System.out.println("Set values"); setValue(stu, "id", 123); setValue(stu, "name", "454"); setValue(stu, "address", "789"); System.out.println("Get values"); System.out.println(">> " + getValue(stu, "id")); System.out.println(">> " + getValue(stu, "name")); System.out.println(">> " + getValue(stu, "address")); System.out.println("Show all methods"); Method[] methods = stu.getClass().getDeclaredMethods(); for(Method method : methods) { System.out.println(">> " + method.getName()); } System.out.println("Show all properties"); Field[] fields = stu.getClass().getDeclaredFields(); for(Field field : fields) { System.out.println(">> " + field.getName()); } } private static Object generateObject(Map properties) { BeanGenerator generator = new BeanGenerator(); Set keySet = properties.keySet(); for(Iterator i = keySet.iterator(); i.hasNext();) { String key = (String)i.next(); generator.addProperty(key, (Class)properties.get(key)); } return generator.create(); } private static Object getValue(Object obj, String property) { BeanMap beanMap = BeanMap.create(obj); return beanMap.get(property); } private static void setValue(Object obj, String property, Object value) { BeanMap beanMap = BeanMap.create(obj); beanMap.put(property, value); } }
代码不难懂,有需要的自己复制。
相关文章推荐
- JavaWeb -- Struts1 动态bean, 动态校验, 动态生成javascript 表单校验
- JavaWeb -- Struts1 动态bean, 动态校验, 动态生成javascript 表单校验
- Cglib 动态生成bean
- java随机生成动态验证码
- Java的反射的动态生成
- 动态代理---动态生成java文件并编译成class文件
- Java 动态生成复杂 Word
- java读取数据库指定表,生成bean,获取主键,自动生成get、set方法
- Java动态生成复杂word
- 直接用java命令行动态生成jpg文件
- 使用xsl来动态生成java代码
- Java 将字符串动态生成字节码的一种方法
- Java操作Excel之理解JXL--读取Excel模板动态写入数据并生成Excel
- Java下的Framework编写(反射,泛型,元数据,CGLib,代码动态生成,AOP,动态语言嵌入)(1)--序
- 如何在SpringMVC框架中利用Java反射机制和Javassist实现Java对象、属性、注解的动态创建生成
- Java动态生成静态页
- java----代理机制或动态类的生成
- java 如何生成动态的gif图片
- Java如何动态生成BasicDataSource数据源