`

java动态代理的基本实现

 
阅读更多

1 目标类接口
package com.cgm.invokeclass;

public interface ITeacher {
public void talk();
}




2.目标类
package com.cgm.invokeclass;

public class Teacher implements ITeacher{

int num=0;

public Teacher(int num){this.num=num;}


public void talk(){
System.out.println("laoshi zai jiang"+num);
}
     
}


3代理类

package com.cgm.invokeclass;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class ProxyDemo {
public static void main(String[] args) throws Exception {
final Object o=new Teacher(1);              //代理对象的加载器
    Object proxyObj=Proxy.newProxyInstance(ProxyDemo.class.getClassLoader(),
        //ITeacher.class.getClasses(),
        //目标类的接口
        new Class[]{ITeacher.class},
        //句柄 用户的每一次调用都能拦截到她的方法
        new InvocationHandler() {  //匿名内部类
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("你执行的方法是"+method.getName());
Object oValue=method.invoke(o, args);
return oValue;
}
});
   
    ITeacher  itacher=(ITeacher) proxyObj;
    itacher.talk();
    String ss=itacher.toString();
    System.out.println("o========="+o);
    System.out.println("ss========="+ss);  //com.cgm.invokeclass.Teacher@a83b8a
    System.out.println("ss========="+itacher.getClass());  //$Proxy0  动态代理类
                  }
                }


结构见图:

     目标类接口(父类)
     /  \
    /    \
目标类(子类)    代理类(内存生成子类的代理对象)


分享到:
评论

相关推荐

    java 动态代理实现AOP

    ### Java动态代理实现AOP详解 #### 一、引言 随着软件开发复杂度的提升,传统的面向对象编程(OOP)已经...总之,通过本篇文章的学习,读者应该能够理解和掌握如何使用Java动态代理来实现AOP的基本原理及实践操作。

    JAVA实现动态代理的简单流程

    在深入探讨Java动态代理的实现过程之前,我们首先需要理解动态代理的基本概念及其在Java中的应用价值。动态代理,顾名思义,是在运行时动态创建代理对象的一种机制,它无需在编译期就确定代理类的具体实现,而是通过...

    java动态代理实例

    首先,我们需要了解Java动态代理的基本原理。在Java中,动态代理主要通过`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口来实现。`Proxy`类用于创建代理对象,而`InvocationHandler`接口...

    java动态代理 经典文章(word 2007格式的)

    - `设计模式:用Java动态代理实现AOP.docx`可能包含了如何使用Java动态代理来实现设计模式,尤其是代理模式,以达到AOP的效果。 - `Spring AOP入门实例详解.docx`可能涵盖了Spring AOP的基本概念、配置以及如何...

    Java实现动态代理

    在Java中,有两种方式实现动态代理:一种是通过Java的标准库`java.lang.reflect.Proxy`,另一种是使用Java的接口`java.lang.reflect.InvocationHandler`。我们先来看Proxy类,它是Java动态代理的核心,它提供了一种...

    基于Java动态代理和反射机制实现ORM

    Java中的`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口提供了实现动态代理的能力。反射则是Java提供的一种能够在运行时分析类、接口、字段和方法等元数据的技术,通过`java.lang.Class`...

    java-jdk动态代理的实现demo

    在Java中,JDK提供了一个`java.lang.reflect.Proxy`类和一个`java.lang.reflect.InvocationHandler`接口,它们是实现动态代理的关键。Proxy类用于创建代理对象,而InvocationHandler接口定义了处理方法调用的逻辑。 ...

    java 动态代理实现注解日志拦截

    在本场景中,我们将探讨如何使用Java动态代理结合注解来实现日志拦截,以便在调用方法时记录相关的日志信息。 首先,让我们了解Java动态代理的基本概念。在Java中,动态代理主要由两个类实现:`java.lang.reflect....

    用Java动态代理实现委托模式

    在Java中,动态代理是实现委托模式的一种常见方式,它允许我们在运行时创建具有特定接口的代理类实例。下面我们将详细探讨如何使用Java动态代理实现委托模式,以及相关的源码和工具应用。 首先,理解委托模式的基本...

    Java动态代理案例演示代码

    以上就是Java动态代理的基本概念和使用方式。在提供的压缩包文件中,可能包含了一个简单的示例,展示了如何创建和使用动态代理。通过阅读和理解这个例子,你可以更深入地掌握动态代理的实现细节。如果你对某个部分有...

    一个简单的java动态代理的实例

    在这个简单的Java动态代理实例中,我们将探讨如何利用这两个核心组件来实现代理功能。 首先,我们需要理解代理模式的基本概念。代理模式是一种设计模式,它为其他对象提供一种代理以控制对这个对象的访问。在Java中...

    java动态代理(2)

    Java动态代理机制是Java语言提供的一种强大的功能,它允许在运行时创建代理对象来实现指定的接口。这一机制使得我们可以在不修改已有代码的情况下,为已有接口增加额外的功能或者增强已有功能的行为。在Java中,动态...

    Java中的动态代理

    通过本文的学习,我们可以了解到Java动态代理的基本原理以及其实现过程。动态代理不仅可以用于扩展已有类的功能,还可以简化代码结构,提高程序的可维护性和扩展性。对于开发人员来说,掌握这一技术将有助于更好地...

    java动态代理新java动态代理新java动态代理新

    Java动态代理是Java反射API提供的一个高级特性,主要用于实现对对象方法的调用拦截。动态代理允许我们在运行时创建一个接口的实现类实例,而无需提前知道其具体实现细节。这在很多框架(如Spring AOP)中得到了广泛...

    java jdk 动态代理 演示demo

    Java JDK提供了`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口,它们是实现动态代理的关键组件。`Proxy`类用于创建代理对象,而`InvocationHandler`接口定义了一个方法,用于处理代理对象...

    Java动态代理详解; CGLib实现动态代理1

    Java 动态代理详解与 CGLib 实现 在 Java 中,代理模式是一种设计模式,它允许我们在不修改原有对象的基础上,为对象增加额外的功能。代理模式的核心在于代理类(Proxy)作为真实对象(RealSubject)的替代品,提供...

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

    在Java编程领域,动态代理和Cglib代理是两种常用的技术,用于在运行时创建对象的代理,以实现额外的功能,如AOP(面向切面编程)中的日志、事务管理等。本篇文章将深入探讨这两种代理机制,尤其是Cglib代理。 首先...

    Java动态代理实现 Proxy InvocationHandler

    在本文中,我们将深入探讨这两个关键组件以及如何使用它们来实现动态代理。 ### 1. Java动态代理的基本概念 动态代理允许我们在运行时创建一个实现了特定接口的新类。这个新类(代理类)可以代理原始类(目标类)...

    java-用Java动态代理实现AOP.pdf

    从文件内容可以看出,文档主要讨论了如何使用Java动态代理来实现AOP的基本原理。文档中提供了一个简单的例子,其中定义了一个业务接口BusinessInterface和一个实现了该接口的BusinessObject类。BusinessObject类中的...

    用Java动态代理实现AOP

    Java 动态代理是实现AOP(面向切面编程)的一种常见方式,尤其适用于日志记录、性能统计、安全控制和事务处理等横切关注点的分离。在Java中,从JDK 1.2开始,`java.lang.reflect.Proxy`类和`java.lang.reflect....

Global site tag (gtag.js) - Google Analytics