AOP简单应用(二)-Pointcut篇

2019-03-26  本文已影响0人  海阔sun天空

前言

上一批AOP简单应用(一)-execution篇简单的介绍了下execution--切点,本篇主要讲解下Pointcut--插桩。切面找到了,下一步就是要植入代码了。

使用

以hock点击事件为例进行讲解:
第一:
hock每一个事件之前,我们都要先搞清楚切点是什么?点击事件的切点就比较简单了,前文已经介绍:execution(* android.view.View.OnClickListener.onClick(..)),那我们的第一个方法就是定切点,写法如下:

    @Pointcut("execution(* android.view.View.OnClickListener.onClick(..))")
    public void click() {

    }
    @After("click()")
    public void clickAspect(JoinPoint joinPoint) {
        Log.d("ClickAspect", "点击事件采集");
    }

AfterBefore使用方式都一样,唯一有区别的就是Around,它的使用跟其他几种区别较大。因为Around可以自己来控制原始代码的执行与否,所以可以进行阻断式插入代码,入参也与其他不同,需要使用ProceedingJoinPoint,如:

    @Around("click()")
    public void clickAspectj(ProceedingJoinPoint joinPoint) throws Throwable{
        //执行原始代码
        joinPoint.proceed();
    }

ProceedingJoinPointJoinPoint的一个子接口,其公开的方法有两个:

public Object proceed() throws Throwable;

public Object proceed(Object[] args) throws Throwable;

下篇将介绍入参JoinPoint和环绕入参ProceedingJoinPoint

未完,待续。。。

上一篇 下一篇

猜你喜欢

热点阅读