ITPub博客

首页 > IT职业 > IT职场 > JAVA_动态代理AOP切面编程

JAVA_动态代理AOP切面编程

IT职场 作者:deeply 时间:2021-09-09 09:49:42 0 删除 编辑

package staticProxy;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;interface Human {    void info();    void fly();}// 被代理类class SuperMan implements Human {    public void info() {        System.out.println("我是SuperMan!");    }    public void fly() {        System.out.println("I believe I can fly!");    }}class HumanUtil {    public void method1() {        System.out.println("============方法一============");    }    public void method2() {        System.out.println("============方法二============");    }}class MyInvocationHandler implements InvocationHandler {    Object obj;// 被代理类对象的一个声明    public void setObject(Object object) {        this.obj = object;    }    @Override    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {        HumanUtil h = new HumanUtil();        h.method1();        Object returnVal = method.invoke(obj, args);        h.method2();        return returnVal;    }}class MyProxy {    // 动态的创建一个代理类的对象    public static Object getProxyInstance(Object obj) {        MyInvocationHandler handler = new MyInvocationHandler();        handler.setObject(obj);        return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), handler);    }}public class DynamicProxyAOP {    public static void main(String[] args) {        SuperMan man = new SuperMan();//创建一个被代理类的对象        Object obj = MyProxy.getProxyInstance(man);//返回一个代理类的对象        Human hu = (Human)obj;        hu.info();//通过代理类的对象调用重写的抽象方法        System.out.println();        hu.fly();    }}

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1978/viewspace-2813073/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: java导出Excel文件
请登录后发表评论 登录
全部评论

注册时间:2008-05-30

  • 博文量
    215
  • 访问量
    24533