这两天看了下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...
这篇文章将对比分析Apache BeanUtils、PropertyUtils、Spring BeanUtils以及Cglib BeanCopier这四个常用的Bean复制工具的性能和特点。 首先,Apache BeanUtils是Apache Commons项目的一部分,提供了一系列便捷的...
- **支持未实现接口的类:** JDK 动态代理要求代理对象必须实现一个或多个接口,而 CGLIB 则可以直接代理任何实现了非 `final` 方法的类。 - **高性能:** 由于它是通过字节码操作来实现方法的拦截,因此性能优于...
在CGLib动态代理机制中,主要有两个核心包: 1. **cglib** 包:这是CGLib的主要实现包,包含了用于创建代理对象的所有类和接口。当无法或者不想使用Java标准的JDK动态代理(只能代理接口实现类)时,CGLib可以生成...
CGLib,全称为Code Generation ...总的来说,CGLib是Java开发中一个不可或缺的工具,尤其在需要动态生成和修改类的场景下,它的高效和灵活使其成为首选。了解并熟练掌握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动态代理是Java开发中的一个重要工具,它通过字节码技术为不支持接口的类提供代理能力,广泛应用于AOP、测试等场景。了解并掌握CGLib,能够帮助开发者更好地理解和利用Java的动态性,提高代码的灵活...
在Java开发中,如果你需要用到动态代理或者需要在运行时扩展已有类的功能,CGlib会是一个很好的选择。下面我们将详细探讨CGlib以及它所需的依赖包。 首先,我们来看一下CGlib的核心组件——`cglib-nodep-2.1_3.jar`...
Cglib3.3.0是该库的最新版本,提供了两个jar包:`cglib-3.3.0.jar`和`cglib-nodep-3.3.0.jar`。 1. **Cglib**:Cglib是一个第三方库,全称为Code Generation Library。它允许开发者在运行时动态地创建子类或者增强...
这个压缩包包含两个版本的CGLIB库:`cglib2.2.jar` 和 `cglib-nodep-2.2.jar`。 `cglib2.2.jar` 是CGLIB的核心库,提供了对Java类进行动态代理和增强的功能。它通过字节码技术生成新的类,这些新类可以扩展或修改...
这两个类用于控制生成的代理类的命名策略,避免与已有的类冲突。 5. `net.sf.cglib.beans.BeanMap`: 这是一个辅助类,可以将任何JavaBean对象转换为Map,方便操作。 使用CGlib创建动态代理的一般步骤如下: 1. ...
总的来说,CGLib作为一个强大的字节码生成库,广泛应用于AOP(面向切面编程)、ORM框架(如Hibernate)、测试工具(如Mockito)等领域,提供了对Java类的灵活扩展和控制。正确理解和使用CGLib,能极大地提升开发效率...
在Spring框架中,CGLib被用作AOP代理的一个重要组件,特别是在没有实现接口的类上创建代理对象时,Spring会默认使用CGLib。 CGLib的工作原理是基于ASM库,ASM是一个字节码操作和分析框架,它可以用来动态生成类或...
CGLIB,全称为Code Generation Library,是一个强大的高性能的代码生成库,它在Java世界里被广泛应用,尤其是在Spring框架中。CGLIB是基于ASM(一个底层的Java字节码操作和分析框架)来实现的,它允许开发者在运行时...
在实际使用中,我们需要将ASM-2.2.3.jar和CGLIB-nodep-2.2.jar这两个库引入到项目中。如果使用Maven或Gradle构建工具,可以通过添加对应的依赖项来实现。对于非依赖版本的CGLIB,开发者需要注意可能存在的功能限制,...
总结来说,CGlib是一个强大且灵活的Java代码生成库,它简化了字节码操作,为开发人员提供了动态创建类和方法的能力,尤其在实现动态代理和AOP场景中有着广泛的应用。理解并掌握CGlib的使用,对于提升Java开发效率和...
CGLIB原理:动态生成一个要代理类的子类,子类重写要代理的类的所有不是final的方法。在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势织入横切逻辑。它比使用java反射的JDK动态代理要快。 CGLIB底层:使用...