myproxyfactory.java

来自「easyweb的使用」· Java 代码 · 共 48 行

JAVA
48
字号
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 + =
减小字号Ctrl + -
显示快捷键?