`

cglib实现动态代理简单实现

阅读更多
package org.forever.xxxx.reflection;

import java.lang.reflect.Method;

import org.forever.xxxx.JpaDao;

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

public class CglibProxy {

	private MethodInterceptor methodInterceptor;

	public CglibProxy(MethodInterceptor methodInterceptor) {
		this.methodInterceptor = methodInterceptor;
	}

	public MethodInterceptor getMethodInterceptor() {
		return methodInterceptor;
	}

	public void setMethodInterceptor(MethodInterceptor methodInterceptor) {
		this.methodInterceptor = methodInterceptor;
	}

	public Object createProxy(Class<?> clazz) {
		Enhancer enhancer = new Enhancer();
		enhancer.setCallback(methodInterceptor);
		enhancer.setSuperclass(clazz);
		return enhancer.create();
	}

	public Object intercept(Object proxy, Method method, Object[] args,
			MethodProxy methodProxy) throws Throwable {
		System.out.println(method.getName());

		return methodProxy.invoke(proxy, args);
	}

	public static void main(String[] args) {
		CglibProxy cglibProxy = new CglibProxy(new DefaultMethodInterceptor());
		JpaDao jpaDao = (JpaDao) cglibProxy.createProxy(JpaDao.class);
		jpaDao.getTargetType();

	}

}

class DefaultMethodInterceptor implements MethodInterceptor {

	public Object intercept(Object proxy, Method method, Object[] args,
			MethodProxy methodProxy) throws Throwable {
		System.out.println(method.getName());
		return null;
	}

}

 

0
0
分享到:
评论

相关推荐

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

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

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

    相反,CGLIB(Code Generation Library)是一种字节码生成库,它可以创建一个目标类的子类并覆盖其方法,以此实现动态代理。CGLIB使用ASM库来操作字节码,因此它不需要目标类实现任何接口,这使得它能应用于没有接口...

    cglib动态代理介绍

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

    jdk动态代理 cglib3.0动态代理

    总结,JDK动态代理和CGLIB是Java中实现动态代理的两种主要方式。JDK代理基于接口,适用于简单场景;CGLIB通过字节码技术,适用于更复杂的需求。开发者可以根据项目需求选择合适的方法。对于学习和理解这两种动态代理...

    JDK动态代理和CGLIB代理

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

    java代理机制 JDK动态代理和cglib代理 详解

    - **JDK动态代理**:适用于目标类已经实现接口的情况,使用简单,但只能针对接口进行代理。 - **CGLIB代理**:更适合未实现接口的类,更灵活,但生成代理类的速度较慢,因为涉及到字节码的生成。 总结: Java代理...

    JAVA动态代理实现Demo(JDK动态代理和CGLIB动态代理)

    CGLIB(Code Generation Library)是在运行期间生成子类来实现代理,因此它适用于没有实现接口的类。CGLIB是一个强大的高性能的代码生成库,它在许多AOP框架中如Spring AOP中被使用。以下是CGLIB的一些关键知识点: ...

    静态代理、jdk动态代理、cglib动态代理

    Cglib 动态代理是另一种代理模式实现方式,它使用ASM 字节码生成库来实现代理对象的创建。Cglib 动态代理的实现方式是:我们首先需要定义一个类,然后使用 Cglib 库来生成该类的代理对象,该代理对象将拦截对被代理...

    简单实现Cglib子类代理

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

    CGlib动态代理的好例子!

    动态代理有两种常见的实现方式:JDK自带的java.lang.reflect.Proxy和第三方库CGlib。JDK的Proxy基于接口实现,而CGlib则可以针对类进行代理,因此当目标对象没有实现接口时,CGlib就显得尤为有用。 CGlib动态代理的...

    代理模式-静态动态代理-jdk动态代理-cglib动态代理

    在Java中,我们可以使用两种方式实现动态代理:JDK动态代理和CGLIB动态代理。 1. **JDK动态代理**: JDK动态代理基于接口实现,也就是说,被代理的对象必须实现至少一个接口。Java的`java.lang.reflect.Proxy`类和...

    java动态代理和cglib动态代理示例分享共5页.pdf

    总的来说,Java动态代理和CGLIB动态代理都是强大的工具,能够帮助开发者实现AOP编程,提升代码的可维护性和复用性。根据实际需求和场景选择合适的代理方式,可以有效地优化应用程序的设计和性能。

    cglib动态代理jar包

    总结来说,CGLIB是一个强大的字节码生成库,它使得在Java中实现动态代理变得简单而高效。通过深入理解CGLIB的工作机制和使用方式,开发者可以更好地利用这一工具来提升代码的灵活性和可维护性。

    AOP-CGLIB学习-实现简单的注解权限系统

    Spring框架提供了一种实现AOP的方式,它支持基于代理的AOP实现,包括JDK动态代理和CGLIB代理。当目标对象不实现接口时,Spring会使用CGLIB来创建代理对象。 CGLIB(Code Generation Library)是一个代码生成库,它...

    java动态代理实例(jdk动态代理和cglib)

    CGLIB是Code Generation Library的缩写,它基于ASM库动态生成字节码实现代理。 1. **引入依赖**:由于CGLIB不是Java标准库的一部分,我们需要在项目中添加对应的依赖。 2. **创建Enhancer对象**:CGLIB的`...

    JDK、CGLib动态代理

    在Java开发中,JDK和CGLib是两种常见的实现动态代理的技术,它们允许我们在运行时创建对象的代理,以增强或拦截对象的方法调用。动态代理在AOP(面向切面编程)中扮演着重要角色,使得我们可以方便地添加如日志、...

    Java动态代理两种实现方式

    Cglib是基于ASM库来实现的,可以为非final类生成子类并覆盖方法,从而实现动态代理。 #### 1. 引入Cglib库 在项目中引入Cglib库,如使用Maven,可以在pom.xml中添加依赖: ```xml &lt;groupId&gt;cglib &lt;artifactId&gt;...

    简单模拟spring cglib代理

    Spring支持两种代理机制:基于接口的JDK动态代理和基于类的CGLIB代理。 CGLIB(Code Generation Library)是一个强大的高性能代码生成库,其底层是通过使用操作Java字节码的开源字节码操作框架(比如ASM)来实现的...

    示例代码:java动态代理和cglib代理的简单例子

    CGLIB(Code Generation Library)是另一个常用的代理库,它在运行时生成子类来实现代理。相比于Java动态代理,CGLIB在处理未实现接口的类时更强大,因为它可以创建目标类的子类,而Java动态代理只能代理实现了接口...

    cglib创建代理类.rar

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

Global site tag (gtag.js) - Google Analytics