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

java 动态代理实例

 
阅读更多
package dynamic;

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

public class DynamicProxy {

	interface IHello{
		public void sayHell();
	}

	// 委托类
	static class Hello implements IHello{
		@Override
		public void sayHell() {
			System.out.println("Hello world");
		}
	}

	//代理类
	static class DynamicProxyDemo implements InvocationHandler{
		private Object object;
		/**
		 * 绑定到代理对象上
		 * @param object
		 * @return
		 */
		public Object bind(Object object){
			//取得代理对象
			this.object = object;
			/**
			 * 参数说明:
				ClassLoader loader:类加载器
				Class<?>[] interfaces:得到全部的接口
				InvocationHandler h:得到InvocationHandler接口的子类实例
			 */
			return Proxy.newProxyInstance(object.getClass().getClassLoader(), object.getClass().getInterfaces(), this);
		}

		/**
		 * 参数说明:
			Object proxy:指被代理的对象。
			Method method:要调用的方法
			Object[] args:方法调用时所需要的参数
		 */
		@Override
		public Object invoke(Object proxy, Method method, Object[] args)
				throws Throwable {
			System.out.println("welcome");
			return method.invoke(object, args);
		}
	}

	public static void main(String[] args) {
		IHello hello = (IHello)new DynamicProxyDemo().bind(new Hello());
		hello.sayHell();
	}
}


分享到:
评论

相关推荐

    java动态代理实例

    在这个实例中,我们将深入探讨Java动态代理的核心概念,以及如何利用它来实现拦截器模式。 首先,我们需要了解Java动态代理的基本原理。在Java中,动态代理主要通过`java.lang.reflect.Proxy`类和`java.lang....

    JAVA动态代理实例

    在Java编程语言中,动态代理是一种强大的特性,它允许我们在运行时创建代理对象来扩展或增强其他对象的功能。这个特性通常用于实现AOP(面向切面编程)或者为已有接口提供额外的服务,如日志、事务管理等。下面我们...

    java 动态代理实例(JDK代理与CGLIB代理)

    Java动态代理是Java编程中一个重要的特性,它允许我们在运行时创建对象的代理,从而可以在不修改原有代码的情况下,对原有对象的行为进行扩展或增强。动态代理主要分为两种:JDK代理和CGLIB代理。 **JDK代理**是...

    java动态代理实例aop

    Java动态代理是Java编程中一个非常重要的特性,它在实际开发中被广泛应用于面向切面编程(Aspect-Oriented Programming,简称AOP)领域。AOP是一种编程范式,旨在提高代码的可重用性和模块化,通过将关注点分离,...

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

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

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

    Java动态代理是Java编程中一个重要的特性,它允许我们在运行时创建对象的代理,从而可以在调用实际方法之前和之后添加额外的行为。本篇将深入探讨两种主要的Java动态代理技术:JDK动态代理和CGLIB。 首先,我们来...

    java 动态代理 简单实例

    Java动态代理是Java语言提供的一种在运行时创建代理对象的技术,它允许我们为已存在的接口创建代理类,以便在调用方法时添加额外的功能或控制。动态代理在很多场景下非常有用,比如日志记录、性能监控、事务管理等。...

    Java反射和动态代理实例

    几个Java反射和动态代理的小例子。可以学习如何通过Java的反射机制实例化对象、调用对象的方法、操作对象的私有成员变量、改变数组中的某项的值、改变数组大小等;可以学习Java的动态代理模式、学习Java工厂模式以及...

    java动态代理demo

    Java动态代理是Java编程中一个重要的特性,它允许我们在运行时创建代理对象,这些代理对象可以代表并增强原对象的功能。动态代理在很多场景下都非常有用,比如日志记录、性能监控、事务管理等。本示例将带你深入理解...

    java反射和动态代理实例

    Java反射和动态代理是Java编程中的高级特性,它们在实际开发中有着广泛的应用。反射机制允许我们在运行时检查类、接口、字段和方法的信息,甚至能够动态调用方法和修改对象的状态。动态代理则是在运行时创建一个实现...

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

    Java动态代理是Java编程中一个重要的特性,它允许在运行时创建代理对象,这些代理对象可以代表并增强原对象的功能。动态代理主要应用于面向切面编程(AOP)和事件监听等场景,使得代码更加模块化,易于维护。以下是...

    java动态代理类的实例

    Java动态代理是Java语言提供的一种高级特性,它允许我们在运行时创建一个代理对象来代替某个接口或类的对象,这个代理对象能够对方法调用进行拦截和处理。在Java中,动态代理主要通过`java.lang.reflect.Proxy`类和`...

    Java中动态代理的介绍及实例

    3. **创建动态代理实例**:通过动态代理类的构造函数或`newProxyInstance()`方法,传入`InvocationHandler`实例,创建动态代理实例。 #### 四、动态代理实例演示 示例代码展示了如何使用JDK动态代理创建一个代理...

    java动态代理机制

    `Proxy` 类是Java提供的一个内部类,它主要用于创建一个实现了指定一组接口的动态代理类实例。使用Proxy类,我们可以通过传入InvocationHandler接口的实现来控制代理对象的行为。Proxy类提供了静态方法`...

    Java动态代理helloworld

    在Java编程语言中,动态代理是一种强大的特性,它允许我们在运行时创建代理对象来扩展或增强已有类的功能。本篇文章将深入探讨Java动态代理的概念、原理以及如何通过一个简单的"Hello, World!"示例来理解它。 动态...

    Java代理模式Java动态代理

    ### Java代理模式与Java动态代理详解 #### 一、代理模式概述 代理模式是一种软件设计模式,它在客户端和目标对象之间提供了一种间接层。这种模式的主要目的是控制客户端对目标对象的访问,并且可以在不修改原有...

    java 动态代理 完整版

    ### Java动态代理完整版知识点详解 #### 一、Java反射机制概述 Java的反射机制是实现动态代理的基础,它提供了一种方式使得程序可以在运行时动态地获取类的信息(如类名、方法名等)以及操作类的对象。通过反射...

    3个动态代理实例

    在Java编程语言中,动态代理是一种强大的特性,它允许我们在运行时创建代理对象来扩展或增强已有对象的功能。动态代理通常用于实现回调、事件监听、事务管理、性能监控等多种功能。下面我们将深入探讨三个动态代理的...

    Java 动态代理详解(学习资料)

    JDK 动态代理JDK 提供了 java.lang.reflect.Proxy 类和 java.lang.reflect.InvocationHandler 接口来支持动态代理。Proxy 类用于创建一个代理对象,而 InvocationHandler 接口则定义了代理对象的方法调用处理逻辑。...

    java动态代理(2)

    这个方法会返回一个实现了所有给定接口的新代理实例,当我们通过代理实例调用接口方法时,实际会转交给`InvocationHandler`的`invoke()`方法处理。 现在,我们结合给定的文件名称来理解其可能的实现结构。假设我们...

Global site tag (gtag.js) - Google Analytics