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

子类代理,接口代理

阅读更多

1、JDK动态代理
 java.lang.reflect.InvocationHandler 调用处理器
java.lang.reflect.Proxy 代理类的父类,是所有jdk代理类的父类
JDK代理类是接口代理,因为它继承了proxy这个类,java是单继承的
jdk代理类通过调用处理器中的invoke方法来实现动态代理的目的,
invoke签名,
public Object invoke(Object proxy,Method method,Object[] args);
proxy 代理实例,method 接口方法的Method实例,args 调用方法的参数数组

代理实例创建
 Proxy.newProxyInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler handler);
loader 代理类的类加裁器,interfaces 代理类要实现的接口列表,handler 调用处理器

实现过程
 1),实现一个调用处理器,这个自定义调用处理器传入一个目标对象target,在invoke方法
  method.invoke(target,args);这个语句前后加入要织入的代码,比如事务、日志
2),构造代理类和代理实例,传入所需参数。调用方法。

说明:若method.invoke(proxy,args);会出现java.lang.StackOverFlowError错误,

2、cglib动态代理
cglib是子类代理,cglib性能要比jdk好,但创建代理对象时,jdk比cglib效率高,
net.sf.cglib.proxy.MethodInterceptor
net.sf.cglib.proxy.MethodProxy
net.sf.cglib.proxy.Enhancer

0
1
分享到:
评论

相关推荐

    简单实现Cglib子类代理

    Cglib代理,也叫做子类代理。在内存中构建一个子类对象从而实现对目标对象功能的扩展。如果想代理没有实现接口的类,就可以使用CGLIB实现。这是一个简单的案例。

    Spring框架+SpringAOP动态代理

    SpringAOP动态代理 Spring AOP 使用的动态代理主要有两种方式:JDK 动态代理和 CGLIB ...CGLIB(Code Generation Library)是一个代码生成的类库,可以在运行时动态生成一个目标类的子类,并覆盖其中的方法来实现代理。

    java设计模式【之】Cglib动态代理【源码】【场景:帮爸爸买菜】

    * Cglib代理(子类代理) * 可以在运行期,扩展java类与实现接口,在内存中创建一个子类对象,实现代理功能 * 底层通过字节码处理框架ASM,转换字节码并生成新的类 * 被代理类都不需要实现接口 * 代理类需要实现...

    接口+抽象类+代理的简单例子

    简单的几个类,让你明白子类、抽象类、接口、代理编程是怎么回事

    基于java的企业级应用开发:JDK动态代理.ppt

    CGLIB代理 CGLIB(Code Generation Library)是一个高性能开源的代码生成包,它采用非常底层的字节码技术,对指定的目标类生成一个子类,并对子类进行增强。 如果想代理没有实现接口的类,那么可以使用CGLIB代理。 ...

    spring_dynamic_proxy:基于接口基于子类的动态代理

    spring_dynamic_proxy:基于接口基于子类的动态代理

    jdk动态代理修改返回类对象.rar

    熟悉动态代理的小伙伴都知道,java的动态代理有两个常用的方式,一个是jdk动态代理,一个是cglib,他们两个在使用上的最大区别就是前者是返回一个接口对象(其实质是Proxy类的子类),后者是返回了被代理类的类对象...

    cglib必须导入的包和案例

    Cglib代理,也叫作子类代理,它是在内存中构建一个子类对象从而实现对目标对象功能的扩展. JDK的动态代理有一个限制,就是使用动态代理的对象必须实现一个或多个接口,如果想代理没有实现接口的类,就可以使用Cglib实现....

    SpringAOP的实现机制(底层原理)、应用场景等详解,模拟过程的实例

    CGLib动态代理: 我们将深入研究CGLib动态代理,它允许您在不需要接口的情况下创建代理对象。您将了解CGLib的工作原理,以及如何生成子类来实现代理。我们还提供了示例,展示如何在Spring AOP中使用CGLib动态代理。 ...

    spring_aop4.rar_Home Home_jar 转换_spring AOP jar

    spring对AOP的支持 1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP... * CGLIB是针对类实现代理,主要是对指定的类生成一个子类,覆盖其中的方法 因为是继承,所以该类或方法最好不要声明成final

    cglib.jar下载

    CGLIB原理:动态生成一个要代理类的子类,子类重写要代理的类的所有不是final的方法。在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势织入横切逻辑。它比使用java反射的JDK动态代理要快。 CGLIB底层:使用...

    Java中的Cglib动态代理jar.7z

    Cglib动态代理技术对目标对象有没有实现接口,没有要求. Cglib动态代理技术,是通过拷贝然后修改目标对象的类的字节码来产生一个代理对象 而且这个Cglib产生的代理对象实例 是 目标对象的一个子类.

    动态代理,JDK实现动态代理,springAOP初学理解动态代理。代码实现

    第一种是JDK提供的基于接口的动态代理,要求被代理的类必须至少实现一个接口。 2. 第二种是第三方cglib提供的基于子类的动态代理,。至少要继承一个类。 我们这里 来讲解,动态代理,以及第一种实现动态代理的方式 ...

    Spring AOP详细介绍.docx

    一 AOP的基本概念 (1)Aspect(切面):通常是一个类,里面可以定义切入点和通知 (2)JointPoint(连接点):程序执行过程中明确的点,...Spring中的AOP代理可以使JDK动态代理,也可以是CGLIB代理,前者基于接口,后者基于子类

    java与模式13.pdf

    定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。 适用性 1.当一个类不知道它所必须创建的对象的类的时候。 2.当一个类希望由它的子类来指定它所创建的...

    Java 基础核心总结 +经典算法大全.rar

    OutputStream 及其子类Reader 及其子类Writer 及其子类 注解 关于 null 的几种处理方式大小写敏感 null 是任何引用类型的初始值 null 只是-种特殊的值使用 Null-Safe 方法null 判断 关于思维导图 Java.IO Java.lang...

    Spring AOP源码深度解析:掌握Java高级编程核心技术

    动态代理是实现AOP的基础,它通过JDK动态代理或CGLIB代理生成被代理对象的子类。通知是织入到目标对象连接点上的一段程序,例如@Before、@After等。 切点定义了通知应该在哪些连接点上触发。而切面则是通知和切点的...

    AOP面向切面编程.docx

    1.jdk动态代理:使用jdk中的Proxy,Method,InvocaitonHanderl创建代理对象,jdk动态代理要求目标类必须实现接口 2.cglib动态代理:第三方的工具库,创建代理对象,原理是继承。 通过继承目标类,创建子类,子类就是...

    php中通过虚代理实现延迟加载的实现代码

    不过我实现的这个版本有局限性: 只适用于对象,无法代理数组等基本数据类型(需要用 ArrayObject 一类的内置对象封装) 被代理之后,一些带有操作符重载性质的接口实现就失效了,例如 ArrayAccess 的索引器、...

    设计模式迷你手册.chm

    当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。 Code Example C++: factorymeth.cpp maze.cpp Geom.H MazeParts.H MazeFactories.H MazeFactory....

Global site tag (gtag.js) - Google Analytics