`
qiqi1982mm
  • 浏览: 34020 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

java创建动态代理类

阅读更多
  这几天一直在研究aop的问题,发现aop的基础是java的动态代理类,一个例子如下
1.一个接口
public interface HelloWorld {
	void sayHelloWorld();
}


2.该接口实现类

public class HelloWorldImpl implements HelloWorld {

	public void sayHelloWorld() {
		System.out.println("Hello World!");
	}

}

3.处理类,类中包括了前置和后置方法
package proxy;

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

public class HelloWorldHandler implements InvocationHandler {

	// 要代理的原始对象
	private Object objOriginal;

	/**
	 ** 构造函数
	 */

	public HelloWorldHandler(Object obj) {
		this.objOriginal = obj;
	}

	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		Object result;
		// 方法调用之前
		doBefore();
		//调用原始对象的方法
		result = method.invoke(this.objOriginal ,args);
		//方法调用之后
		doAfter();

		return null;
	}
	
	private void doBefore()
	{
		System.out.println("before method invoke!");
	}
	
	private void doAfter()
	{
		System.out.println("after method invoke!");
	}

}

4.测试类
package proxy;

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

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		HelloWorld hw=new HelloWorldImpl();
		InvocationHandler handler=new HelloWorldHandler(hw);
		//创建动态代理对象
		HelloWorld proxy = (HelloWorld) Proxy.newProxyInstance(
				hw.getClass().getClassLoader(),
				hw.getClass().getInterfaces(),
				handler);
		proxy.sayHelloWorld();

	}

}
分享到:
评论

相关推荐

    java 简答可复用动态代理类

    - `Proxy`类是Java提供的动态代理的工厂,它可以根据一个接口生成实现了该接口的代理类的对象。这个代理类会动态地生成并实现接口的所有方法。 - `InvocationHandler`接口定义了一个处理方法调用的回调方法`invoke...

    java动态代理类的实例

    在Java中,静态代理是通过定义一个与被代理类实现相同接口的新类来实现的,而动态代理则在运行时动态生成此类,无需预先编写代理类的代码。 `java.lang.reflect.Proxy`类是Java动态代理的核心,它提供了创建代理...

    java动态代理实现详解

    3. 创建代理类:使用`Proxy.newProxyInstance()`生成代理类的实例,传入类加载器、接口数组和自定义的`InvocationHandler`实例。 4. 使用代理对象:通过代理对象调用方法,实际上会触发`InvocationHandler`的`invoke...

    动态代理及生成的代理类

    动态代理及其生成的代理类,可以反编译查看其类的结构。

    java动态代理demo

    Java动态代理基于Java反射机制,可以在运行时动态地创建代理类和代理对象。与静态代理(即手动编写代理类)相比,动态代理无需预先为每个接口编写单独的代理类,使得代码更加灵活且易于维护。 2. **代理接口** 在...

    Java实现动态代理

    Java动态代理是Java编程中一个重要的特性,它允许我们在运行时创建代理对象,这些代理对象可以作为原有对象的“中间人”,在调用原有方法前或后执行额外的操作,如日志记录、性能监控、事务管理等。动态代理在很多...

    java jdk 动态代理 演示demo

    Java JDK 动态代理是一种强大的特性,它允许我们在运行时创建代理对象,这些代理对象可以扩展或增强已存在的接口实现。动态代理在处理AOP(面向切面编程)场景、事件监听、性能监控等方面有着广泛的应用。下面我们将...

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

    2. **获取动态代理类**:使用`Proxy.getProxyClass()`或`Proxy.newProxyInstance()`方法,传入类加载器、接口列表以及`InvocationHandler`实例,创建动态代理类。 3. **创建动态代理实例**:通过动态代理类的构造...

    Java代理模式Java动态代理

    - **静态方法:** `newProxyInstance`方法用于创建代理类实例,该方法接收三个参数: - `ClassLoader loader`: 定义代理类的类加载器。 - `Class[] interfaces`: 代理类要实现的接口列表。 - `InvocationHandler h`...

    java 动态代理 简单实例

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

    java动态代理实例

    Java动态代理是Java语言提供的一种在运行时创建代理对象的技术,它允许我们为已存在的接口创建代理类,以便在调用真实目标对象的方法时添加额外的功能或行为。在这个实例中,我们将深入探讨Java动态代理的核心概念,...

    java Proxy 动态代理

    - `Proxy.newProxyInstance()`是Proxy类的核心方法,用于创建代理对象。它需要三个参数:一个ClassLoader对象,一个接口数组,以及一个InvocationHandler实例。ClassLoader用于加载代理对象的类,接口数组指定了...

    JAVA静态代理和动态代理

    相比静态代理,动态代理更加灵活,因为它是在运行时动态创建代理类。Java的`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口提供了动态代理的支持。 1. 定义接口: ```java public ...

    java动态代理详细解析

    `Proxy.newProxyInstance()`方法则用于创建代理对象,它需要`ClassLoader`(加载代理类的类加载器)、`Class[] interfaces`(代理类需要实现的接口数组)和`InvocationHandler`实例作为参数。 示例代码中的`...

    Java动态代理两种实现方式

    不过,Cglib生成代理类的速度比JDK慢,且内存占用稍高。 总结来说,Java动态代理为开发者提供了灵活的代码扩展机制,可以根据实际需求选择适合的实现方式。JDK动态代理适用于接口丰富的场景,而Cglib更适合对性能有...

    JAVA类加载机制与动态代理

    动态代理是一种在运行时创建代理类的技术。代理类是在程序运行时动态生成的,其字节码来源于以下几个途径: - **字节码操作库**:例如使用CGLIB、ASM等库自动生成代理类的字节码。 - **动态语言支持**:例如使用`...

    Java动态代理案例演示代码

    `Proxy`类用于创建代理类实例,而`InvocationHandler`接口定义了处理代理对象的方法调用的逻辑。 ### 2. 创建代理类 要创建一个动态代理,首先需要实现`InvocationHandler`接口。这个接口有一个方法`invoke()`,当...

    java jdk 动态代理演示demo2

    Java JDK 动态代理是一种强大的特性,它允许我们在运行时创建代理类,这些代理类可以扩展或修饰已存在的接口实现。动态代理在处理跨层调用、事务管理、日志记录、性能监控等方面非常有用,尤其在AOP(面向切面编程)...

    java动态代理机制分析及拓展

    Java 动态代理机制是Java语言提供的一种在运行时创建代理类和代理对象的机制,主要涉及`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口。动态代理通常用于实现AOP(面向切面编程)、事件...

Global site tag (gtag.js) - Google Analytics