zoukankan      html  css  js  c++  java
  • 最简单的动态代理实例(spring基于接口代理的AOP原理)

    JDK的动态代理是基于接口的

    package com.open.aop; public interface BusinessInterface {     public void processBusiness(); }

    目标对象

    package com.open.aop; publicclass BusinessObject implements BusinessInterface {     publicvoid processBusiness() {         System.out.println("action");     } }

    代理对象

    package com.open.aop; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; publicclass LogHandler implements InvocationHandler {     private Object delegate;     public Object binder(Object delegate) {         this.delegate=delegate;         return Proxy.newProxyInstance(delegate.getClass().getClassLoader(),                 delegate.getClass().getInterfaces(),this);     }     public Object invoke(Object proxy, Method method, Object[] args)             throws Throwable {         Object obj =null;         System.out.println("对象方法调用前");         try{             obj = method.invoke(delegate, args);         }catch (Exception e) {         }         System.out.println("对象方法调用后");         return obj;     } }

    测试类

    package com.open.aop; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Proxy; publicclass Test {     publicstaticvoid main(String[] args) {         BusinessInterface bi = (BusinessInterface) new LogHandler()                 .binder(new BusinessObject());         bi.processBusiness();     } }

    输出结果

    对象方法调用前 action 对象方法调用后
  • 相关阅读:
    JAVA线程池原理详解一
    并发工具类:CountDownLatch、CyclicBarrier、Semaphore
    JAVA并行框架:Fork/Join
    Mock Server实践
    MockWebServer使用指南
    mybatis学习笔记 spring与mybatis整合
    怎样使用Mock Server
    基于unittest测试框架的扩展
    运营商劫持
    单元测试实战手册
  • 原文地址:https://www.cnblogs.com/shaohz2014/p/3582151.html
Copyright © 2011-2022 走看看