springAOP秘书老总案例

   日期:2020-10-11     浏览:98    评论:0    
核心提示:要想完成这个案例,首先了解,什么是AOP如上图,有两个类,A类和B类。我们可以通过AOP,实现在使用A类的methodA方法之前,先调用B类的methodb1()方法,然后再执行自己的mehodA()方法,再调用B类的methodb2()方法。在了解了AOP的概念知道呢,我们就可以来对该案例进行分析了如上图,我们想要在老总类调用eat()吃的方法时,秘书类先调用自己的daojiu()倒酒方法,然后老总类再调用自己的eat()方法,最后秘书类再调用自己的huazi()方法.思维导图:代码如

要想完成这个案例,首先了解,什么是AOP

如上图,有两个类,A类和B类。

我们可以通过AOP,实现在使用A类的methodA方法之前,先调用B类的methodb1()方法,然后再执行自己的mehodA()方法,再调用B类的methodb2()方法。

在了解了AOP的概念知道呢,我们就可以来对该案例进行分析了

如上图,我们想要在老总类调用eat()吃的方法时,秘书类先调用自己的daojiu()倒酒方法,然后老总类再调用自己的eat()方法,最后秘书类再调用自己的huazi()方法.

思维导图:

代码如下:

ILaoZong

package com.lbl.proxy;

public interface ILaoZong { 
    void eat();
}

LaoZongImpl

package com.lbl.proxy;

public class LaoZongImpl implements ILaoZong { 
    @Override
    public void eat() { 
        System.out.println("吃三下锅");
    }
}

MiShu

package com.lbl.proxy;

public class MiShu { 
    public void dianyan(){ 
        System.out.println("点烟");
    }
    public void daojiu(){ 
        System.out.println("倒酒");
    }

}

proxyTest

@Test
public void test01(){ 
    LaoZongImpl laoZong = new LaoZongImpl();
    MiShu miShu = new MiShu();
    ClassLoader classLoader=LaoZongImpl.class.getClassLoader();
    Class[] interfaces = { ILaoZong.class};
    InvocationHandler handler=new InvocationHandler() { 
        @Override
        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { 
            miShu.daojiu();
            Object returnVal = method.invoke(laoZong, args);
            miShu.dianyan();
            return returnVal;
        }
    };
    ILaoZong iLaoZong = (ILaoZong) Proxy.newProxyInstance(classLoader,interfaces , handler);
    iLaoZong.eat();
}

运行结果:

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服