spring学习笔记(19)——重用切点表达式

来源:互联网 发布:java中scaner的next 编辑:程序博客网 时间:2024/05/02 08:18

重用切点表达式

先看看之前的代码

@Aspect@Componentpublic class LoggingAscept {    @Before("execution(* com.zj.asceptj.*.*(..))")    public void beforeMethod(JoinPoint joinpoint){        //注意,JoinPoint来自org.aspectj.lang.JoinPoint,小心导错包        //方法名        String methodName = joinpoint.getSignature().getName();        //方法参数        List<Object> args = Arrays.asList(joinpoint.getArgs());        System.out.println("method "+methodName+" begin:"+args);    }    @After("execution(* com.zj.asceptj.*.*(..))")    public void afterMethod(JoinPoint joinpoint){        //注意,JoinPoint来自org.aspectj.lang.JoinPoint,小心导错包        //方法名        String methodName = joinpoint.getSignature().getName();        //方法参数        List<Object> args = Arrays.asList(joinpoint.getArgs());        System.out.println("method "+methodName+" end:"+args);    }}

在每一个通知中的execution(* com.zj.asceptj.*.*(..))几乎都是一致的,我们希望能够重用起来,也便于后期的维护

@Aspect@Componentpublic class LoggingAscept {    /**     * 声明切点表达式     */    @Pointcut("execution(* com.zj.asceptj.*.*(..))")    public void declareJoinPointExpression(){}    @Before("declareJoinPointExpression()")    public void beforeMethod(JoinPoint joinpoint){        //注意,JoinPoint来自org.aspectj.lang.JoinPoint,小心导错包        //方法名        String methodName = joinpoint.getSignature().getName();        //方法参数        List<Object> args = Arrays.asList(joinpoint.getArgs());        System.out.println("method "+methodName+" begin:"+args);    }    @After("declareJoinPointExpression()")    public void afterMethod(JoinPoint joinpoint){        //注意,JoinPoint来自org.aspectj.lang.JoinPoint,小心导错包        //方法名        String methodName = joinpoint.getSignature().getName();        //方法参数        List<Object> args = Arrays.asList(joinpoint.getArgs());        System.out.println("method "+methodName+" end:"+args);    }}

如果在其他的切面中使用,加上类名即可,例如在ValidateAspect中

@After("LogginAspect.declareJoinPointExpression()")

如果在不同包中,类名前再加上包名即可

0 0
原创粉丝点击