JDK动态代理

原创 2011年10月13日 20:56:41
package com.bjpowernode.pattern;

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

/**
 * 这是一个描述代理类的类,而不是代理类,因为动态代理类是动态生成的
 * @author Kevin
 *
 */
public class LogHanlder implements InvocationHandler {
	
	/**
	 * 目标类的对象
	 */
	private Object targetObject;
	
	/**
	 * 创建代理类对象
	 * @param targetObject 目标类的对象
	 * @return 代理类对象
	 */
	public Object newProxyInstance(Object targetObject) {
		
		this.targetObject = targetObject;
		
		return Proxy.newProxyInstance(targetObject.getClass().getClassLoader(),
				targetObject.getClass().getInterfaces(),
				this);
	}



	/**
	 * 调用代理类的方法时就会调用该方法 (invoke)
	 * @param proxy 代理类对象
	 * @param method 代理类方法
	 * @param args 代理类方法参数
	 */
	@Override
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		
		// 输出代理类方法
		System.out.println("Start->>" + method.getName());
		
		// 输出代理类方法的参数
		for (int i = 0; i < args.length; i++) {
			System.out.println(args[i]);
		}
		
		// 调用目标方法的返回值
		Object returnValue = null;
		
		try {
			// 执行代理类的方法时去调用目标类的方法
			returnValue = method.invoke(targetObject, args);
			
			System.out.println("success->>" + method.getName());
			
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("error->>" + method.getName());
		}
		
		return returnValue;
	}

}

 

JDK企业级安装和配置一次成功

1)Java是目前排名第一的开发语言,程序设计工具。也是目前市场最大,最好找工作的语言。 2)JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。 JDK是学习Java开发的第一步;是万丈高楼的第一步“地基”。安装的成功与否直接影响企业Java的使用和研发。
  • 2017年01月19日 15:06

JDK动态代理_JDK动态代理

  • 2009年10月18日 10:56
  • 32KB
  • 下载

jdk动态代理示例以及代码原理分析

相信很多人在刚刚学习Java时,会感觉【动态代理】晦涩难懂,只知道如何来调用它,却不知道它的实现细节。本文通过根据JDK源码,展示这些细节,以期能对JDK的动态代理有深入的理解。 简单示例代码 pub...
  • PKWind
  • PKWind
  • 2016-12-09 14:49:21
  • 1081

JDK动态代理示例

Java动态代理可以动态地创建代理并动态地处理对所代理方法的调用。下面用《Java编程思想》中的一个例子说明: 首先是接口类,目标类要实现的接口:public interface Interface...
  • x_i_y_u_e
  • x_i_y_u_e
  • 2016-04-29 21:08:02
  • 1071

jdk动态代理例子

jdk动态代理例子1. 声明接口package cn.zhengyong.proxy;/** * 接口 * @author zhengyong * */ public interface Or...
  • zhengyong15984285623
  • zhengyong15984285623
  • 2016-06-17 15:26:08
  • 874

CGLIB 和 JDK生成动态代理类的区别

AOP 使用的设计模式就是代理模式,是对IOC设计的补充。为了扩展性,往往会加上反射,动态生成字节码,生成代理类。  这里往往还会使用到DI,把代理的实现类通过依赖注入的方式,传给代理工厂。  关于生...
  • hanxuemin12345
  • hanxuemin12345
  • 2014-10-31 00:19:53
  • 7020

Java JDK 动态代理(AOP)使用及实现原理分析

一、什么是代理? 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理...
  • xunzaosiyecao
  • xunzaosiyecao
  • 2016-08-07 20:17:08
  • 16258

细说JDK动态代理的实现原理

关于JDK的动态代理,最为人熟知的可能要数Spring AOP的实现,默认情况下,Spring AOP的实现对于接口来说就是使用的JDK的动态代理来实现的,而对于类的代理使用CGLIB来实现。那么,什...
  • mhmyqn
  • mhmyqn
  • 2015-09-15 21:12:35
  • 25166

cglib与JDK动态代理适用场景

JDK动态代理优点 不依赖第三方jar包, 使用方便 随着JDK的升级,JDK动态代理的性能在稳步提升 缺点 只能代理实现了接口的类 执行速度较慢 适用场景如果你的程序需要频繁、反复地创建代理对象,则...
  • tracker_w
  • tracker_w
  • 2016-04-06 10:42:12
  • 1640

JDK动态代理的实现和原理解析(基于JDK1.7)

一、什么是代理代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。详细介绍请参考:...
  • xiaokang123456kao
  • xiaokang123456kao
  • 2017-08-29 20:18:17
  • 1367
收藏助手
不良信息举报
您举报文章:JDK动态代理
举报原因:
原因补充:

(最多只允许输入30个字)