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 对象方法调用后
  • 相关阅读:
    Celery的使用
    python中使用redis
    Redis基础
    版本控制器git
    day 74作业
    Djangorestfromwork作业1
    Django rest-framework的jwt认证
    Django --form验证
    cx-oracle-------------------安装
    排序算法
  • 原文地址:https://www.cnblogs.com/shaohz2014/p/3582151.html
Copyright © 2011-2022 走看看