AOP的简单实现

实例:在目标类和需要切入的类之间建立代理,如:主程序A(目标程序)要干某件事,现在需要在干这件事之前通知B程序一声,B要先干点活,比如写个日志,做个笔记啥的,然后A在去做这件事,本来A和B胡不搭嘎的,作为A自身专注与自己的事,不会去管B的,反之B一样,那怎么在A执行这件事前让B先干呢,这就是代理的作用,它负责A与B之间的通信,传达通知。

目标类A:Target.class

1 package test.aop;
2 
3 public class Target {
4     //do something
5     public void execute(String name){
6         System.out.println("do something"+name);
7     }
8 }

拦截类B:LoggerExcute.clas

package test.aop;

import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;

/**
 * 拦截targetf方法,执行日志输出
 */
public class LoggerExecute implements MethodInterceptor {
    @Override
    public Object invoke(MethodInvocation methodInvocation) throws Throwable {
        before();//执行前置通知
        methodInvocation.proceed();
        return null;
    }

    void before(){
        System.out.println("程序开始执行");
    }
}

代理类C:负责AB之间的通信Manager.class

 1 package test.aop;
 2 
 3 import org.springframework.aop.framework.ProxyFactory;
 4 
 5 /**
 6  * 在被切对象:target和切的对象之间创建代理
 7  * 相当与桥梁的作用
 8  */
 9 public class Manager {
10     //create proxy
11     public static void main(String[] args) {
12         Target target = new Target();
13         ProxyFactory di = new ProxyFactory();
14         di.addAdvice(new LoggerExecute());//通知LoggerExecute
15         di.setTarget(target);//确定服务对象:target
16         Target proxy = (Target)di.getProxy();
17         proxy.execute("AOP的简单实现");
18     }
19 }

 

 

转载于:https://www.cnblogs.com/ditto/p/9257516.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值