zoukankan      html  css  js  c++  java
  • java实现动态代理切面编程

    package proxy;

    import java.lang.reflect.InvocationHandler;
    import java.lang.reflect.Method;
    import java.lang.reflect.Parameter;

    public class MyInvocation implements InvocationHandler{
    Object obj;

    public void setObj(Object obj) {
    this.obj = obj;
    }


    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

    Parameter[] parameters = method.getParameters();
    for (Parameter parameter : parameters) {
    parameter.getName();
    }

    ProxyUtii.proxyMethod1(method.getName());

    Object invoke = method.invoke(obj, args);

    ProxyUtii.proxyMethod2(method.getName());

    return invoke;
    }

    }

    package proxy;

    import java.lang.reflect.Proxy;

    public class MyProxy {

    public static Object getProxyInstance(Object obj) {

    MyInvocation mi = new MyInvocation();

    mi.setObj(obj);

    Object newProxyInstance = Proxy.newProxyInstance(obj.getClass().getClassLoader(),
    obj.getClass().getInterfaces(),mi);

    return newProxyInstance;

    }

    }

    package proxy;

    public class ProxyUtii {

    public static void proxyMethod1(String str) {
    System.out.println("开始执行sql方法:"+str+"****************************************");
    }


    public static void proxyMethod2(String str) {
    System.out.println("结束执行sql方法:"+str+"****************************************");
    }

    }

    public static void main(String[] args) {

    Object proxyInstance = MyProxy.getProxyInstance(pmaunewMapperImpl);

    PmaunewMapper pm = (PmaunewMapper) proxyInstance;

    List<Pmaunew> selectTest = pm.selectTest();

    }

  • 相关阅读:
    JUC锁框架_AbstractQueuedSynchronizer详细分析
    npm的镜像替换成淘宝
    MHA+keepalived集群环境搭建
    Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
    链表中倒数第k个结点
    调整数组顺序使奇数位于偶数前面
    数值的整数次方
    二进制中1的个数
    矩形覆盖
    OS之进程管理---多线程模型和线程库(POSIX PTread)
  • 原文地址:https://www.cnblogs.com/cw828/p/11031308.html
Copyright © 2011-2022 走看看