⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myproxyfactory.java

📁 EasyJWeb的框架代码
💻 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 + -