代理分两种,静态和动态的。静态代理的意思就是给每一个需要代理的接口都去写一个代理,如果系统中几千个都需要呢,那要写的代理太多了。这时就需要动态代理了,动态的意思就是在程序运行期间,可以动态的传入目标对象,用来动态调用的。你随便传入一个对象,都可以进行代理的。看代码:
- /**
- *
- * @param target 需要代理的目标对象
- * @param advice 执行目标对象方法前后可以执行的其他代码对象
- * @return
- */
- public Object getProxy(Object target, Advice advice) {
- return Proxy.newProxyInstance(target.getClass().getClassLoader(),
- target.getClass().getInterfaces(),
- new InvocationHandler() {
- @Override
- public Object invoke(Object proxy, Method method, Object[] args)
- throws Throwable {
- advice.beforeMethod();
- Object retVal = method.invoke(target, args);
- advice.afterMethod();
- return retVal;
- }
- });
- }
复制代码 |