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 对象方法调用后
  • 相关阅读:
    数据库底层索引
    shell脚本
    备份还原ESXi 中的虚拟机快照
    docker proxy
    yum
    ubuntu系统更换源和apt命令参数
    前端BootStrap框架和django创建项目和app
    python之路5:常用模块
    python之路3:文件操作和函数基础
    python之路4:各种器
  • 原文地址:https://www.cnblogs.com/shaohz2014/p/3582151.html
Copyright © 2011-2022 走看看