首先,在android studio中直接配置AspectJ,这个配置很重要,如果失败,后面就无法成功,先贴出我的配置,在app的build.gradle中做配置。
然后,但是编译时得用Aspect专门的编译器,这里的配置就是使用Aspect的编译器,单独加入aspectj依赖是不行的。到这里准备工作已完成,可以开始看看具体实现了。
然后,创建切面AspectJ ,用来处理触发切面的回调,这里要使用Aspect的编译器编译必须给类打上标注,@Aspect。
然后,在Pointcut这里,我使用了execution,也就是以方法执行时为切点,触发Aspect类。而execution里面的字符串是触发条件,也是具体的切点。我来解释一下参数的构成。“execution(@com.zx.aopdemo.login.CheckLogin * *(..))”这个条件是所有加了CheckLogin注解的方法或属性都会是切点,范围比较广。
然后,再来看看@Around,Around是指JPoint执行前或执行后被触发,除了Around还有其他几种方式。Before前置通知, 在目标执行之前执行通知,After后置通知, 目标执行后执行通知,Around环绕通知, 在目标执行中执行通知, 控制目标执行时机,AfterReturning后置返回通知, 目标返回时执行通知,AfterThrowing异常通知, 目标抛出异常时执行通知,创建完Aspect类之后,还需要一个注解类,它的作用是:哪里需要做切点,那么哪里就用注解标注一下,这样方便快捷。
最后,如果使用的是以方法相关为切点,那么使用MethodSignature来接收joinPoint的Signature。如果是属性或其他的,那么可以使用Signature类来接收。之后可以使用Signature来获取注解类。,那么通过jointPoint.getThis()获取使用该注解的的上下文对象。
上述方法为小编整理所得,希望能够帮助到大家。