动态代理详解(一)应用示例
来源:互联网 发布:法国大革命 评价 知乎 编辑:程序博客网 时间:2024/06/08 11:56
import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;public class MyInvocationHandler implements InvocationHandler{ // 目标对象 private Object target; /** * 构造方法 * @param target 目标对象 */ public MyInvocationHandler(Object target) { super(); this.target = target; } /** * 执行目标对象的方法 */ public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { // 在目标对象的方法执行之前简单的打印一下 System.out.println("--------before-------"); // 执行目标对象的方法 Object result = method.invoke(target, args); // 在目标对象的方法执行之后简单的打印一下 System.out.println("--------after--------"); return result; } /** * 获取目标对象的代理对象 * @return 代理对象 */ public Object getProxy() { return Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), target.getClass().getInterfaces(), this); }}
public interface UserService { /** * 目标方法 */ public abstract void add();}
public class UserServiceImpl implements UserService{ public void add() { System.out.println("-------add------"); }}
import org.junit.Test;public class ProxyTest { @Test public void testProxy() throws Throwable { // 实例化目标对象 UserService userService = new UserServiceImpl(); // 实例化InvocationHandler MyInvocationHandler invocationHandler = new MyInvocationHandler(userService); // 根据目标对象生成代理对象 UserService proxy = (UserService) invocationHandler.getProxy(); // 调用代理对象的方法 proxy.add(); }}
运行结果:
------------------before--------------------------------------add----------------------------------after------------------
0 0
- 动态代理详解(一)应用示例
- 动态代理-JDK 源码剖析(一):简单示例
- java动态代理详解(一)
- 动态代理(一)
- 动态代理(一)---JDK动态代理
- Java 动态代理示例
- 动态代理示例
- 动态代理,示例
- JDK动态代理示例
- 动态代理示例
- JDK动态代理示例
- 动态代理代码示例
- jdk动态代理(一)
- Spring动态代理(一)
- JDK动态代理(一)
- Java动态代理(一)
- Spring 动态代理(一)
- 设计模式之代理模式------动态代理(示例说明)
- 题目1077:最大序列和
- JDK7新特性_JDK7的六个新特性
- SpriteKit代码动态调整sks文件中粒子的颜色
- 论文阅读《DeNet: Scalable Real-time Object Detection with Directed Sparse Sampling》
- C++面向对象第一周笔记<Boolan>
- 动态代理详解(一)应用示例
- 线性代数入门知识5(二次型)
- 计算图(computational graph)角度看BP(back propagation)算法
- 题目1078:二叉树遍历
- TCP/IP核心协议之传输层协议
- 安卓手机高通平台开发常用命令
- Boolean.getBoolean(String name)方法分析
- TensorFlow实战12:实现基于LSTM的语言模型
- Bazel (google自动化构建工具)