java简单的动态代理示例

原创 2015年07月07日 14:11:48


1、定义一个接口Student,后面用于强转proxy实例类型

interface Student {
	public void study();
}

2、定义接口实现类StudentImpl

      对象调用getClass().getClassLoader(), getClass().getInterfaces(),用于proxy实例参数

public class StudentImpl implements Student {

	public void study() {
		System.out.println("woaixuexi");

	}

}

3、定义自己的MyInvocationHandle实现InvocationHandler,在此定义所要增加的方法

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

public class MyInvocationHandle implements InvocationHandler {
	private Object handler;
	
	public MyInvocationHandle() {
		super();
	}

	
	public MyInvocationHandle(Object handler) {
		super();
		this.handler = handler;
	}


	public Object invoke(Object arg0, Method arg1, Object[] arg2)
			throws Throwable {
		System.out.println("xuexiqianchifan");
		Object result = arg1.invoke(handler, arg2);
		System.out.println("shuijiao");
		return result;
	}

}

4、测试类

      new StudentImpl 对象,作为参数传入MyInvocationHandle,产生proxy实例,向下转型为Student,不能是StudentImpl

import java.lang.reflect.Proxy;

public class StudentTest {
	public static void main(String[] args) {
		StudentImpl st = new StudentImpl();
		MyInvocationHandle my = new MyInvocationHandle(st);
		Student p = (Student) Proxy.newProxyInstance(st.getClass().getClassLoader(), st.getClass().getInterfaces(), my);
		p.study();
	}
}


Java之动态代理类实现日志简单实例

开心一笑上课呢,同桌撕了一片纸放嘴里了咬了咬,又吐回了手里。 揉了揉,揉成个球状,然后又把这东西给放嘴里,咽下去了。 我问:你干嘛呢? 这二货幽幽地说:这两天有点感冒,捏个药丸吃。提出问题Jav...
  • huangwenyi1010
  • huangwenyi1010
  • 2016年07月01日 07:17
  • 1312

java动态代理--一个简单的例子

这几天看视频看到了java的动态代理,这里写一个小例子。在写例子的时候发现:认为自己会了,和能写出来真不是一个概念。还是要多写代码,然后写博客再深入一些,费曼学习法--教,是最好的学。 1.什么是动...
  • Heyeverybody
  • Heyeverybody
  • 2016年02月21日 12:02
  • 1537

java动态代理实例

1.真实对象接口1 public interface IAnimal {2     void info();3 }2.真实类1 public class Cat implements IAnimal{...
  • xueyepiaoling
  • xueyepiaoling
  • 2011年03月04日 16:22
  • 659

Java动态代理示例代码

Proxy 提供用于创建动态代理类和实例的静态方法。简洁方法:Foo f = (Foo) Proxy.newProxyInstance(Foo.class.getClassLoader(),     ...
  • anerou
  • anerou
  • 2007年06月20日 11:35
  • 3731

简单动态代理实例(使用jdk的proxy)

在持久层DAO层中,对数据库操作有影响的增、删、改都需要开启事物,并在执行完增删改之后要提交事物。但如果每个方法都这样写的话,那么代码变显得冗余,采用动态代理的方式来实现这种需求的话,可以使代码更清晰...
  • rain097790
  • rain097790
  • 2013年11月05日 16:17
  • 1519

Java 动态代理简单示例

接口和实现类: package dongtaidaili; public interface Interface { void doSomething(); void somethin...
  • jack_bob
  • jack_bob
  • 2017年11月06日 09:17
  • 41

实现动态代理的两种方式介绍+例子demo(JDK、CGlib)

JDK实现动态代理需要实现类通过接口定义业务方法,对于没有接口的类,如何实现动态代理呢? 这就需要CGLib了。CGLib采用了非常底层的字节码技术,其原理是通过字节码技术为一个类创建子类,并在子类中...
  • u011133213
  • u011133213
  • 2014年03月04日 20:57
  • 3395

Java新手小白 对动态代理的一些理解

学到Spring AOP的时候,发现AOP底层是使用动态代理实现的 便学着用动态代理模拟了一下AOP事务的处理,也是第一次使用动态代理 写完之后,得出两个问题 然后加断点走了一下 ...
  • zhaokai5881058
  • zhaokai5881058
  • 2018年01月26日 16:10
  • 26

动态代理的通俗理解

动态代理 四种类: 1.        被代理类: 以汽车、坦克等为例,这种类有一个抽象接口,例如Moveable,为了在调用实现的具体方法前插入其他的事物逻辑,比如检查车辆情况、检查驾驶员情况...
  • daskyrk
  • daskyrk
  • 2014年08月30日 10:25
  • 583

简单动态代理实例(使用cglib)

在持久层DAO层中,对数据库操作有影响的增、删、改都需要开启事物,并在执行完增删改之后要提交事物。但如果每个方法都这样写的话,那么代码变显得冗余,采用动态代理的方式来实现这种需求的话,可以使代码更清晰...
  • rain097790
  • rain097790
  • 2013年11月05日 16:51
  • 957
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java简单的动态代理示例
举报原因:
原因补充:

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