`
blueskylan
  • 浏览: 98013 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

cglib使用

阅读更多


import java.lang.reflect.Method;

import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;

public class BaseInterceptor implements MethodInterceptor {
private Object target;

private Enhancer enhancer = new Enhancer();

public Object getInstrumentedClass(Class c,Object object){
this.target = object;
enhancer.setSuperclass(c);
enhancer.setCallback(this);
return enhancer.create();
}

public Object getInstrumentedClass(Class c){
enhancer.setSuperclass(c);
enhancer.setCallback(this);
return enhancer.create();
}

public Object intercept(Object o, Method method, Object[] values,
MethodProxy proxy) throws Throwable {
// TODO 自动生成方法存根
this.doBefore();
//Object obj = proxy.invokeSuper(object,values);
Object obj = proxy.invokeSuper(o,values);
this.doAfter();

return obj;
}

public void doBefore(){
System.out.println("before:");
}

public void doAfter(){
System.out.println("after:");
}

public static void main(String[] args){
BaseInterceptor instrumenter = new BaseInterceptor();
Test test = (Test)instrumenter.getInstrumentedClass(Test.class);
test.say();
}

}
class Test{
public void say(){
System.out.println("Hello!");
}
}
分享到:
评论

相关推荐

    cglib使用的jar包

    测试基于cglib动态代理测试使用的jar包. asm-7.0-beta.jar asm-commons-7.0-beta.jar asm-util-7.0-beta.jar cglib-3.1.jar

    cglib包及依赖汉cglib3.1和asm4.2

    cglib包及依赖汉cglib3.1和asm4.2,主要作用是用户代理,代理为控制要访问的目标对象提供了一种途径。当访问对象时,它引入了一个间接的层。JDK自从1.3版本开始,就引入了动态代理,并且经常...现在我们可以使用CGLIB包

    动态代理cglibjar包和源码

    - CGLIB使用ASM库来操作字节码生成子类。ASM是一个Java字节码操控和分析框架,可以用来动态生成类或者增强已有类的功能。 - 当我们需要代理一个类时,CGLIB会创建一个目标类的子类,并在子类中拦截父类方法的调用...

    cglib-nodep

    3. **字节码生成**: CGlib使用ASM生成新的类的字节码,并将其加载到JVM中。ASM库提供了低级别的字节码操作,使得CGlib可以精确地控制生成的子类的行为。 4. **对象实例化**: 生成的子类可以通过`Enhancer.create()`...

    简单实现Cglib子类代理

    在Spring框架中,当目标对象没有实现接口时,Spring会默认使用Cglib进行代理。 CGLIB全称为Code Generation Library,它能够生成Java字节码并将其编译为Class对象。Cglib通过继承机制来创建代理对象,因为不是所有...

    CGLib代理模式用到的jar包

    3. Callback:这是一个回调接口,CGLib使用它来调用用户定义的拦截器。在创建代理对象时,可以设置多个Callback,这些Callback会在代理对象的方法调用时按顺序执行。 4. cglib.jar:这是CGLib的主要依赖库,包含了...

    cglib.jar源码

    4. **ClassGenerator**:CGLIB使用ASM库生成字节码,ClassGenerator就是这个过程的抽象,包括子类的创建、方法的定义等。 5. **NamingPolicy**:命名策略,用于处理生成的子类的命名,防止因为类名冲突而导致的问题...

    cglib-nodep2.2.2

    - **Callback**:CGLIB使用Callback接口来处理方法调用。常见的Callback实现有MethodInterceptor(用于拦截方法调用)和FixedValue(返回固定值)等。 3. **使用场景** - **AOP(面向切面编程)**:Spring AOP...

    强势分享cglib-src-2.2

    3. **拦截器(Callback)**:CGLib使用拦截器来控制代理对象的行为。常见的拦截器有MethodInterceptor和MethodProxy,前者可以在方法调用前后插入自定义逻辑,后者则可以直接控制方法的调用过程。 4. **字节码生成*...

    CGLIB demo

    下面是一个简单的CGLIB使用示例: ```java import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.proxy.MethodInterceptor; import net.sf.cglib.proxy.MethodProxy; import java.lang.reflect.Method; ...

    基于MAVEN项目的CGLib动态代理原理及实现

    CGLib使用ASM库来生成和加载字节码。 4. 创建Enhancer对象 CGLib的核心是`Enhancer`类,它是代理对象的工厂。我们可以通过它来指定要代理的目标类,并设置回调方法。例如: ```java Enhancer enhancer = new ...

    Cglib和ASM打包合集

    Cglib使用ASM作为底层字节码处理工具,通过ASM提供的API,Cglib能够动态生成字节码,创建出目标类的子类,然后在子类中拦截并增强方法的调用。这种方法相对于基于接口的Java动态代理(JDK Proxy)来说,不仅适用于有...

    cglib实现动态代理依赖jar包

    1. **生成子类字节码**:根据目标类的信息,CGLib使用ASM生成子类的字节码。 2. **加载子类**:将生成的字节码转换为Class对象,然后由JVM加载到内存中。 3. **创建子类实例**:使用反射或者特殊工厂方法创建子类...

    浅谈JDK动态代理与CGLIB代理去区别

    CGLIB使用ASM库来操作字节码,因此它不需要目标类实现任何接口,这使得它能应用于没有接口或接口不完整的类。CGLIB的代理对象比JDK动态代理稍微慢一些,因为它涉及到字节码生成,但它的灵活性更高。 在性能方面,...

    Java 动态代理和Cglib代理(二)

    Cglib使用ASM库来操作字节码,生成新的子类。Spring框架就广泛使用了Cglib来实现AOP代理。 使用Cglib代理的基本步骤如下: 1. 引入Cglib库,如spring-core或cglib-nodep。 2. 创建一个Enhancer对象,它是Cglib的...

    cglib2.2.jar

    2. **方法拦截器**:CGLIB使用`Enhancer`类来创建代理对象,并通过`Callback`接口实现方法拦截。`Callback`可以是`MethodInterceptor`,在方法调用前后执行自定义逻辑。 3. **字节码生成**:CGLIB通过ASM库生成新的...

    cglib__jar包.zip

    CGLIB使用ASM来实现对字节码的低级别操作,如生成新类和方法,以及插入自定义的字节码指令。 3. **在Spring中的应用**: - Spring框架中的AOP模块广泛使用了CGLIB,尤其是当目标对象没有实现任何接口时。Spring ...

    cglib-2.2.2 (含其他包)

    CGLIB使用ASM库来操作字节码,实现对Java类的底层操作。在Spring AOP中,如果没有找到目标类的接口,CGLIB就会被用来创建代理类。 2. **cglib-nodep-2.2.2.jar**: 这个版本的CGLIB不依赖于任何其他的外部库,如...

    cglib 源代码分析(原创)

    在字节码层面,CGlib使用ASM来生成和操作字节码。ASM提供了一套低级别的API,可以直接操作类的字节码,创建、修改和分析Class对象。通过对字节码的增删改,CGlib能够动态地创建出具有新特性的类,如增加方法、修改...

Global site tag (gtag.js) - Google Analytics