这两天看了下cglib的一些源码,发现BeanMap和BeanCopier在工作中应该可以用到,虽然已经apache和spring的相关工具类可以用了,但是多一个工具类也不嫌多嘛,况且BeanCopier的速度会更快一些。
1.BeanMap本身是实现了Map的接口,将对象转成Map很方便使用
2.不同对象的属性的COPY
import net.sf.cglib.beans.BeanCopier; import net.sf.cglib.beans.BeanMap; public class Test { public static void main(String[] args) { Test t = new Test(); User u = t.new User(); u.setAge(25); u.setName("mike"); BeanMap m = BeanMap.create(u); System.out.println(m.get("name")+","+m.get("age")); Person p = t.new Person(); BeanCopier b = BeanCopier.create(User.class, Person.class, false); b.copy(u, p, null); System.out.println(p.toString()); } public class Person{ private String name; @Override public String toString() { return "Person [name=" + name + ", age=" + age + "]"; } private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } public class User{ private String name; private int age; public User(){ } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } }
结果:
mike,25
Person [name=mike, age=25]
更多参考:
相关推荐
开发工具 cglib-3.2.4开发工具 cglib-3.2.4开发工具 cglib-3.2.4开发工具 cglib-3.2.4开发工具 cglib-3.2.4开发工具 cglib-3.2.4开发工具 cglib-3.2.4开发工具 cglib-3.2.4开发工具 cglib-3.2.4开发工具 cglib-3.2.4...
cglib动态代理用到的两个包 cglib动态代理用到的两个包 cglib动态代理用到的两个包
cglib动态生成java类
如果你遇到这个异常,可以尝试这个修改过的jar包 at net.sf.cglib.core.ReflectUtils.getMethodInfo(ReflectUtils.java:424) at net.sf.cglib.beans.BeanCopier$Generator.generateClass(BeanCopier.java:133) at...
CGLIB简介CGLIB简介CGLIB简介CGLIB简介CGLIB简介
使用CGLIB扩展对象行为的原理是:对目标对象进行继承扩展,为其生成相应的子类,而子类可以通过覆写来扩展父类的行为,只要将横切逻辑的实现放到子类中,然后让系统使用扩展后的目标对象的子类,就可以达到与代理...
赠送jar包:cglib-3.1.jar; 赠送原API文档:cglib-3.1-javadoc.jar; 赠送源代码:cglib-3.1-sources.jar; 赠送Maven依赖信息文件:cglib-3.1.pom; 包含翻译后的API文档:cglib-3.1-javadoc-API文档-中文(简体)版...
springAOP等框架中,大量用到代理技术;...两类代理技术: 1,java动态代理,见JDK文档或相关java书; 2.cglib创建代理类,比第一种更加简单,代理类和背代理类不需要实现共同接口。本例子就是cglib代理的例子,很简单
CGLIB原理:动态生成一个要代理类的子类,子类重写要代理的类的所有不是final的方法。在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势织入横切逻辑。它比使用java反射的JDK动态代理要快。 CGLIB底层:使用...
GLIB是一个功能强大,高性能的代码生成包。
spring-bean 源码依赖的jar包,用于spring源码部署的时候使用
cglib包及依赖汉cglib3.1和asm4.2,主要作用是用户代理,代理为控制要访问的目标对象提供了一种途径。当访问对象时,它引入了一个间接的层。JDK自从1.3版本开始,就引入了动态代理,并且经常被用来动态地创建代理。...
CGlib动态代理类jar包,一共两个jar包,模拟CGlib动态代理用得到。
cglib
cglib.zip
cglib和asm搭配的jar,方便你使用动态代理
CGlib动态代理类jar包,一共四个jar包,模拟CGlib动态代理用得到。
NULL 博文链接:https://m635674608.iteye.com/blog/2270455
CGLIB是一个强大的高性能的代码生成包。它广泛的被许多AOP的框架使用,例如Spring AOP和dynaop,为他们提供方法的interception(拦截)。最流行的OR Mapping工具hibernate也使用CGLIB来代理单端single-ended(多对一...