📄 myproxyfactory.java
字号:
package com.easyjf.aop;
import java.lang.reflect.Proxy;
/**
* 测试
* @author stef_wu
*
*/
public class MyProxyFactory {
public static Object getProxyObject(String className, String[] interceptors)
throws Exception {
Object inputObject = getTargetObject(className);
if (interceptors != null && interceptors.length > 0) {
Object inputProxiedObject = inputObject;
for (int i = 0; i < interceptors.length; i++) {
inputProxiedObject = getProxyObject(inputObject,
interceptors[i], inputProxiedObject);
}
return inputProxiedObject;
} else {
return inputObject;
}
}
private static Object getProxyObject(Object inObject, String interceptor,
Object inProxiedObject) throws Exception {
GenericInvocationHandler invocationHandler = new GenericInvocationHandler();
IMethodInterceptor interceptorObject = (IMethodInterceptor) getInterceptor(interceptor);
if (interceptor == null) {
return inProxiedObject;
}
invocationHandler.setTarget(inProxiedObject);
invocationHandler.setRealTarget(inObject);
invocationHandler.setMethodInterceptor(interceptorObject);
return Proxy.newProxyInstance(inObject.getClass().getClassLoader(),
inObject.getClass().getInterfaces(), invocationHandler);
}
private static Object getInterceptor(String interceptors) throws Exception {
return Class.forName(interceptors).newInstance();
}
private static Object getTargetObject(String className) throws Exception {
return Class.forName(className).newInstance();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -