您的位置:首页 > 编程语言 > Java开发

Spring中应用java动态代码实现Aop

2012-05-10 14:22 513 查看
用三个类来举例说明java动态代码实现方法

Spring的做法,基于接口的用proxy

普通接口类

package com.jamesby.proxy;
public interface CarCompany {

public void makeCar();
public void abc();
}


实现接口类

package com.jamesby.proxy;

public class CarCompanyImpl implements CarCompany {
public void makeCar() {
System.out.println("Company A make a car!");
abc();
}
public void abc()
{
System.out.println("abc is invoked!");
}
}


动态代理句柄

package com.jamesby.proxy;

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

public class CarCompanyHandler implements InvocationHandler {
CarCompany com;

public CarCompanyHandler(CarCompany com) {
this.com = com;
}

public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("time1:" + System.currentTimeMillis());
method.invoke(this.com, new Object[]{});
System.out.println("time2:" + System.currentTimeMillis());
return null;
}
}


测试类

package com.jamesby.proxy;

import java.lang.reflect.Proxy;

public class Test {
public static void main(String[] arg) {
CarCompanyImpl a = new CarCompanyImpl();
CarCompanyHandler handler = new CarCompanyHandler(a);
// 产生一个新的代理类
CarCompany com = (CarCompany) Proxy.newProxyInstance(Test.class
.getClassLoader(), new Class[] { CarCompany.class }, handler);
com.makeCar();
}
}


此时就可以实现代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: