package cn.cglib;
import java.lang.reflect.Method;
import java.util.logging.Logger;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
public class TestCglibProxy {
public static void main(String[] args) {
AProxy ap = new AProxy();
A a = (A)ap.getProxy(A.class);
a.method1();
a.method2();
}
}
/**
* 这个A类是我们的目标类
* @ClassName: A
* @Description: TODO
* @author Administrator
* @date May 7, 2011 9:13:59 PM
*
*/
class A{
public void method1(){
System.out.println(" A method1");
}
public void method2(){
System.out.println(" A method2");
}
}
/**
* 这个AProxy类是我们针对A类的代理类,它实现了MethodInterceptor这个接口
* 在实现这个接口的同时,public Object intercept()----这个方法必须被重写
* 其中有一个Enhancer这个类,这个类就是用来专门为目标类在运行时动态的生成目标类的子类对象
* @ClassName: AProxy
* @Description: TODO
* @author Administrator
* @date May 7, 2011 9:14:20 PM
*
*/
class AProxy implements MethodInterceptor{ //MethodInterceptor 方法的拦截器
private Logger log = Logger.getLogger("A");
private Enhancer en = new Enhancer();//Enhancer 这个类是cglib很重要的一个类
public Object getProxy(Class c){
en.setCallback(this);
en.setSuperclass(c);
return en.create();//动态生成c类子类的对象
}
//这个方法必须被重写
public Object intercept(Object o, Method m, Object[] os,
MethodProxy proxy) throws Throwable {
log.info("invoke method: " + m.getName());
Object result = proxy.invokeSuper(o, os);//实际上就是接着调用父类的方法
return result;
}
}
分享到:
相关推荐
CGLIB,全称为Code Generation Library,是一个强大的高性能的代码生成库,它在Java世界里被广泛应用,尤其是在Spring框架中。CGLIB是基于ASM(一个底层的Java字节码操作和分析框架)来实现的,它允许开发者在运行时...
【CGLib:强大的Java代码生成库】 CGLib(Code Generation Library)是一个强大的、高性能的代码生成库,它在运行期扩展Java类与实现Java接口。这个库最初是为EJB的透明代理而设计的,但后来发展成为了一个广泛的...
CGLIB介绍与原理(部分节选自网络) 一、什么是CGLIB? CGLIB是一个功能强大,高性能的代码生成包。它为没有实现接口的类提供代理,为JDK的动态代理提供了很好的补充。通常可以使用Java的动态代理创建代理,但当要...
CGlib,全称为Code Generation Library,是一个强大的Java代码生成库,广泛用于动态代理、AOP(面向切面编程)框架以及性能优化等场景。它通过字节码技术为类创建子类,从而实现对目标类的功能增强。在Java中,由于...
CGLIB,全称为Code Generation Library,是一个强大的高性能的代码生成库,被广泛应用于Java世界,尤其是Spring框架中。它允许程序在运行时动态地创建Java对象并扩展已有类的功能。CGLIB是通过字节码技术实现的,而...
CGLib,全称为Code Generation Library,是一个强大的高性能的代码生成库,它在Java世界中被广泛应用,尤其是在动态代理和AOP(面向切面编程)领域。这个库的主要功能是能够在运行时动态创建类或者增强已有类的功能...
CGLib,全称为Code Generation Library,是一个强大的Java代码生成库,广泛用于动态代理、AOP(面向切面编程)等领域。它允许开发者在运行时创建和扩展Java类,而无需直接编写新的源代码或编译步骤。这个压缩包...
赠送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文档-中文(简体)版...
Cglib是一个强大的、高性能的代码生成库,它在Java世界中被广泛应用,尤其是在动态代理和AOP(面向切面编程)领域。Cglib3.3.0是该库的最新版本,提供了两个jar包:`cglib-3.3.0.jar`和`cglib-nodep-3.3.0.jar`。 1...
cglib包及依赖汉cglib3.1和asm4.2,主要作用是用户代理,代理为控制要访问的目标对象提供了一种途径。当访问对象时,它引入了一个间接的层。JDK自从1.3版本开始,就引入了动态代理,并且经常被用来动态地创建代理。...
开发工具 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,全称为Code Generation Library,是一个非常强大的Java字节码操纵和动态代理框架。它在Java编程中扮演着重要角色,特别是在AOP(面向切面编程)和ORM(对象关系映射)框架中,如Spring AOP和Hibernate。这个...
CGLib,全称为Code Generation Library,是一个强大的Java字节码操作库,广泛应用于动态代理、AOP(面向切面编程)以及性能优化等领域。它允许开发者在运行时创建和增强新的类或对象,而无需编写任何Java源代码。...
其中,`cglib.jar` 和 `asm.jar` 是实现Java动态代理的两个关键库,它们在许多框架和库中都有广泛的应用,比如Spring AOP和Hibernate。 `cglib.jar` 是一个强大的代码生成库,全称为Code Generation Library。它...
CGLib,全称为Code Generation Library,是一个强大的高性能的代码生成库,它在Java世界中被广泛应用,尤其是在动态代理和AOP(面向切面编程)领域。CGLIB是由Evan Schoolnik开发并维护的,它最初是作为Jakarta OGNL...
Cglib代理,也叫作子类代理,它是在内存中构建一个子类对象从而实现对目标对象功能的扩展. JDK的动态代理有一个限制,就是使用动态代理的对象必须实现一个或多个接口,如果想代理没有实现接口的类,就可以使用Cglib实现....
Cglib是一个强大的Java代码生成库,它在运行时动态创建子类,为现有类提供扩展功能。这个库被广泛用于实现AOP(面向切面编程)中的代理机制,特别是当无法通过接口代理时,例如Java标准库中的类。Cglib是Eclipse的...
CGlib,全称为Code Generation Library,是一个强大的、高性能的代码生成库,主要为Java语言设计。它被广泛应用于许多框架中,例如Spring AOP(面向切面编程)和Hibernate ORM(对象关系映射)。CGlib允许开发者在...
**CGLIB2.2 Jar包详解** CGLIB(Code Generation Library)是一个强大的高性能的代码生成库,它被广泛应用于Java世界中的动态代理和字节码操作。CGLIB是基于ASM库来实现的,ASM是一个底层的Java字节码操控和分析...