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

使用JDK创建代理类

阅读更多
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

import com.dao.impl.PersonDaoImpl;

//当目标类实现了接口,我们可以使用jdk的Proxy来生成代理对象。
public class JDKProxyFactory implements InvocationHandler{  
    private Object targetObject;  
      
    public Object createProxyIntance(Object targetObject){  
        this.targetObject = targetObject;  
        /*
        * 第一个参数设置代码使用的类装载器,一般采用跟目标类相同的类装载器
        * 第二个参数设置代理类实现的接口
        * 第三个参数设置回调对象,当代理对象的方法被调用时,会委派给该参数指定对象的invoke方法
        */
        return Proxy.newProxyInstance(this.targetObject.getClass().getClassLoader(),   
                this.targetObject.getClass().getInterfaces(), this);  
    }  
  
    public Object invoke(Object proxy, Method method, Object[] args)  
            throws Throwable {
    	PersonDaoImpl bean = (PersonDaoImpl) this.targetObject;  
        Object result = null;   
        if(bean.getUser()!=null){  
           
            try {  
                result = method.invoke(targetObject, args);  
              
            } catch (RuntimeException e) {  
               
            }finally{  
              
            }  
        }  
        return result;  
    }  
  
}  
分享到:
评论

相关推荐

    JDK动态代理(AOP)使用及原理分析视频教程课件

    动态:在程序执行时,调用jdk提供的方法才能创建代理类的对象。jdk动态代理,必须有接口,目标类必须实现接口, 没有接口时,需要使用cglib动态代理。 动态代理可以在不改变原来目标方法功能的前提下, 可以在代理中...

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

    java设计模式【之】JDK动态代理...代理类,接收父亲类对象,利用反射机制,创建一个代理对象(在内存中动态创建代理对象) * Proxy.newProxyInstance (ClassLoader(类加载器),interface(接口),handler(监听处理器))

    cglib创建代理类.rar

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

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

    * * * * JDK动态代理 JDK动态代理 JDK动态代理是通过java.lang.reflect.Proxy 类来实现的,我们可以调用Proxy类的newProxyInstance()方法来创建代理对象。对于使用业务接口的类,Spring默认会使用JDK动态代理来实现...

    JDK动态代理+JDK动态代理完整代码+JDK动态代理代码实现逻辑

    动态代理类不仅简化了编程工作,而且提高了软件系统的可扩展性,因为Java反射机制可以生成任意类型的动态代理类。 java.lang.reflect 包中的Proxy类和InvocationHandler接口提供了生成动态代理类的能力。

    cgLib与JDK动态代理的用法

    按照代理的创建时期,代理类可以分为两种。 静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。 动态代理:在程序运行时,运用反射机制动态创建而成。

    AOP的实现机制

    Java在JDK1.3后引入的动态代理机制,使我们可以在运行期动态的创建代理类。使用动态代理实现AOP需要有四个角色:被代理的类,被代理类的接口,织入器,和InvocationHandler,而织入器使用接口反射机制生成一个代理类...

    JDK动态代理(powernode CD2207 video)(教学视频+源代码)

    JDK动态代理(powernode CD2207 video)(教学视频+源代码) ...1.1.6 目标类(被代理类)Fangdong 1.1.7 接口 1.1.8 测试类App 1.1.9 测试结果 1.1.10 封装自定义的InvocationHandler 1.1.11 修改测试类App2

    JDK的动态代理(powernode 文档)(源代码)

    JDK的动态代理(powernode 文档)(源代码) JDK的动态代理(powernode 文档) 一、动态代理 ...1.1.8 代理类处理器 1.1.9 测试类 1.1.10 测试结果 1.1.11 生成的代理类源码 1.1.12 JDK动态代理的不足

    Java面向对象系列[v1.0.0][使用反射生成动态代理]

    在Java的java.lang.reflect包里有个Proxy类和一个InvocationHandler接口,通过使用他们可以生成JDK动态代理类或动态代理对象 使用Proxy和InvocationHandler创建动态代理 Proxy提供了用于创建动态代理类和代理对象的...

    Spring框架+SpringAOP动态代理

    Spring 会使用 java.lang.reflect.Proxy 类来创建代理对象。 CGLIB 代理:用于代理没有实现接口的类或final类。CGLIB(Code Generation Library)是一个代码生成的类库,可以在运行时动态生成一个目标类的子类,并...

    你必须会的 JDK 动态代理和 CGLIB 动态代理

    静态代理就是在程序运行之前,代理类字节码.class就已编译好,通常一个静态代理类也只代理一个目标类,代理类和目标类都实现相同的接口。 接下来就先通过 demo 进行分析什么是静态代理,当前创建一个 Animal 接口,...

    Java动态代理方法详解.docx

    动态:在程序执行时,调用jdk提供的方法才能创建代理类的对象。 jdk动态代理,必须有接口,目标类必须实现接口, 没有接口时,需要使用cglib动态代理 1.知道动态代理能做什么 ? 可以在不改变原来目标方法功能的前提...

    疯狂JAVA讲义

    学生提问:使用组合关系来实现复用时,需要创建两个Animal对象,是不是意味着使用组合关系时系统开销更大? 159 5.9 初始化块 159 5.9.1 使用初始化块 160 5.9.2 初始化块和构造器 161 5.9.3 静态初始化块 162 ...

    Spring3注解

    AOP(Aspect Orient Programming),也就是面向方面编程,作为面向对象编程的一种补充,专门用于...而动态代理则在运行时借助于 JDK 动态代理、CGLIB 等在内存中“临时”生成 AOP 动态代理类,因此也被称为运行时增强。

    cglib.jar下载

    通常可以使用Java的动态代理创建代理,但当要代理的类没有实现接口或者为了更好的性能,CGLIB是一个好的选择。 二、CGLIB原理 CGLIB原理:动态生成一个要代理类的子类,子类重写要代理的类的所有不是final的方法。...

    Java JDK实例宝典

    全部代码出自电子工业出版社夏先波的《Java JDK实例宝典》一书,本书以J2SE 5.0为开发环境,选取Java应用的典型实例,循序渐进地介绍了Java语言的各种开发方法和技巧,实例代码注释详细规范,思路清晰。 第1章 ...

    AOP面向切面编程.docx

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

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

    JDK自从1.3版本开始,就引入了动态代理,并且经常被用来动态地创建代理。JDK的动态代理用起来非常简单,但它有一个限制,就是使用动态代理的对象必须实现一个或多个接口。如果想代理没有实现接口的继承的类,该...

    1579068285.png

    简单创建代理模式,快速使用。能够让你快速了解代理的好处很使用。可看到 1、代理类继承了Proxy类并且实现了要代理的接口,由于java不支持多继承,所以JDK动态代理不能代理类 2、重写了equals、hashCode、...

Global site tag (gtag.js) - Google Analytics