`
dwj147258
  • 浏览: 194090 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

CGlib实现代理

阅读更多

JDK实现代理必须使代理对象实现接口,而CGLIb则改变了这一点

首先创建一个业务实现类不继承不实现接口,就简单一点吧

public class ProxyObject {
	public void show(){
		System.out.println("show");
	}
}

 接着就是写一个代理类:

import java.lang.reflect.Method;

import org.logicalcobwebs.cglib.proxy.Enhancer;
import org.logicalcobwebs.cglib.proxy.MethodInterceptor;
import org.logicalcobwebs.cglib.proxy.MethodProxy;

public class CGlibProxyTest implements MethodInterceptor{
	private Enhancer obj = new Enhancer();
	
	public Object getProxy(Class<?> cls){
		 obj.setSuperclass(cls);  
	     obj.setCallback(this);
	     return obj.create();
	}
	@Override
	public Object intercept(Object obj, Method method, Object[] aobj,
			MethodProxy methodproxy) throws Throwable {
		Object result = null ;
		System.out.println("befor");
		result = methodproxy.invokeSuper(obj, aobj);
		System.out.println("after");
		return result;
	}
	
}

 代码都很简单,就不一一解释了,Enhancer是cglib需要用到的一个类,可以把它看成一个创建代理对象的工厂,最后是测试方法

 

public class MainTest {
	public static void main(String[] args) {
		CGlibProxyTest proxy = new CGlibProxyTest() ;
		ProxyObject obj = (ProxyObject) proxy.getProxy(ProxyObject.class);
		obj.show();
		
	}
}

 这样就实现了代理

分享到:
评论

相关推荐

    CGLIB实现代理demo

    NULL 博文链接:https://huihai.iteye.com/blog/858524

    CGlib实现动态代理(承接上面JDK实现动态代理)

    在Java中,CGlib是一个非常重要的工具,特别是在AOP(面向切面编程)和ORM(对象关系映射)框架中,如Spring和Hibernate广泛使用它来实现代理功能。 CGlib动态代理的工作原理是通过继承被代理的目标类来创建子类,...

    jdk与cglib动态代理与底层实现

    JDK和CGLIB是Java中实现动态代理的两种主要方式,它们在Spring框架中扮演着关键角色,尤其是在AOP(面向切面编程)中。 1. **JDK动态代理**: JDK动态代理基于Java的接口机制实现,因此,要使用JDK动态代理,被...

    Jdk动态代理和cglib动态代理原理

    Java中的动态代理是一种重要的设计模式...总结来说,JDK动态代理和CGLIB动态代理都是为了在运行时提供对目标对象的增强,它们通过不同的实现方式提供了扩展功能的可能性,开发者可以根据项目需求和场景选择合适的技术。

    Spring框架中JDK动态代理和cglib动态代理

    CGLIB 动态代理可以代理没有接口的类,這是因为 CGLIB 动态代理可以生成一个原类的子类,然后 override 原类的方法来实现代理。 在 Spring AOP 框架中,默认情况下,Spring 会选择使用 JDK 动态代理,但是如果目标...

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

    在Java开发中,动态代理和CGLIB代理是两种常见的面向切面编程(AOP)实现方式,它们都用于在不修改原有代码的情况下,增强或扩展对象的功能。本篇文章将深入探讨JDK动态代理和CGLIB代理的区别,以及它们在实际应用中...

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

    本文将深入探讨如何在基于Maven的项目中利用CGLib库实现动态代理。CGLib(Code Generation Library)是Java中一个高性能的代码生成库,它在运行期通过字节码技术为类创建子类,以此实现动态代理。 1. Maven项目配置...

    简单实现Cglib子类代理

    Cglib子类代理是Java动态代理的一种实现方式,它主要通过字节码技术在运行时动态创建一个目标对象的子类,以此来实现代理功能。Cglib是一个强大的高性能的代码生成库,它在许多AOP(面向切面编程)框架中被广泛应用...

    cglib动态代理介绍

    CGlib则是Java动态代理的一种实现方式,尤其是在不提供接口的情况下,它通过生成目标类的子类来实现动态代理。 在Java中,JDK自带的动态代理机制是基于接口的,如果被代理的类没有实现任何接口,那么就无法使用JDK...

    jdk和cglib实现动态代理

    分别使用jdk和cglib实现动态代理,包含UML图。还有相关的博客链接:http://blog.csdn.net/y_love_f/article/details/46345581.博客中有具体的代理解释

    AOP之JDK动态代理和CGLib动态代理

    CGLib通过生成目标对象的子类来实现代理,它会动态地创建一个新的类,这个类继承自目标类,并覆盖其方法以插入切面逻辑。CGLib的优点是它可以代理任何类,无需目标对象实现接口,但相比JDK动态代理,它的运行效率较...

    CGlib.jar动态代理资源包

    回调机制是CGLib实现代理的关键,Callback接口有多种实现,如MethodInterceptor、FixedValue等,它们定义了不同的回调行为。在实际应用中,你可以根据需求选择合适的Callback实现,以实现如性能统计、事务管理、日志...

    java常用设计模式及JDK与CGLIB实现动态代理区别(源码)

    java常用设计模式及JDK与CGLIB实现动态代理区别(源码) /** * 使用cglib动态代理 * @author * */ public class BookFacadeProxy implements MethodInterceptor{ private Object target; @Override public...

    cglib实现动态代理依赖jar包

    这个“cglib实现动态代理依赖jar包”包含了两个核心的JAR文件:asm-5.1.jar和cglib-3.2.4.jar。 **ASM库**: ASM是一个字节码操控和分析框架,它可以直接生成和修改Java类和Android Dalvik字节码。ASM库主要用在...

    cglib创建代理类.rar

    springAOP等框架中,大量用到代理技术; 两类代理技术: 1,java动态代理,见JDK文档或相关java书;...2.cglib创建代理类,比第一种更加简单,代理类和背代理类不需要实现共同接口。本例子就是cglib代理的例子,很简单

    cglib动态代理jar包

    CGlib动态代理是Java开发中一个非常重要的工具库,它主要用来实现代理模式,尤其在面向切面编程(AOP)中发挥着关键作用。CGlib是一个强大的高性能的代码生成库,它可以在运行期扩展Java类与实现Java接口。CGlib并不...

    转载:cglib动态代理介绍(一)

    ### CGlib实现动态代理 1. **创建Enhancer对象**:Enhancer是CGlib的核心类,用于创建代理对象。我们可以通过调用`Enhancer.create()`方法来生成代理对象。 ```java Enhancer enhancer = new Enhancer(); enhancer....

    JDK动态代理和CGLIB代理

    JDK动态代理和CGLIB代理是两种常用的实现方式。 首先,我们来看看JDK动态代理。JDK动态代理主要通过`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口来实现。Proxy类用于创建一个代理对象...

    cglib代理模式要使用的相关jar包

    CGLIB通过字节码技术生成代理类,能够在运行时动态创建子类并扩展目标对象,从而实现代理功能。这种代理方式相对于Java自带的JDK动态代理(基于接口的代理)来说,对目标类没有接口限制,更具有灵活性。 要使用...

    cglib.jar和asm.jar

    CGlib实现代理模式的原理是通过继承目标类来创建代理对象。当创建代理对象时,CGlib会动态地生成一个新的类,这个新类继承自目标类,并且覆盖其方法。在这些覆盖的方法中,CGlib会插入额外的逻辑,如调用切面或拦截...

Global site tag (gtag.js) - Google Analytics