package com.rlovep.aop;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import org.springframework.stereotype.Component;
public class ProxyFactory {
// 目标对象
private static Object target;
private static Aop aop;
private static int k;
// 生成代理对象的方法,这里相当于代理对象的构造器
public static Object getProxyInstance(Object target_,Aop aop_,int k_){
target = target_;
aop = aop_;
k=k_;
return Proxy.newProxyInstance(
target.getClass().getClassLoader(),
target.getClass().getInterfaces(),
new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
aop.begin();// 执行重复代码
// 执行目标对象的方法
Object returnValue = method.invoke(target, args);
System.out.println(k);
aop.commite(); // 执行重复代码
return returnValue;
}
});
}
}