SpringAOP环绕通知注解形式

@annotation的用法

package com.weiwen.provider.web.Aspect;


import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;


/**
 * @author ml
 * @date 2019/6/24 11:47
 */
@Aspect
@Component
@Slf4j
public class TraderAspect2 {

    /**
     * 切入点表达式,拦截com.weiwen.provider.web.trade.UserTraderController类下的所有方法
     */
    @Pointcut("execution(* com.weiwen.provider.web.trade.UserTraderController.*(..))")
    public void user() {}


    /**
     * 切入点表达式,拦截方法上有@Auth注解的所有方法
     */
    @Pointcut("@annotation(com.weiwen.provider.utils.Auth)")
    public void userAuth() {
    }


    /**
     * @param point
     * @return
     * @throws Throwable
     */
    @Around("userAuth()")
    public Object around(ProceedingJoinPoint pjp) throws Throwable {
        Object[] args = pjp.getArgs(); //获取目标方法参数
        boolean flag=false;
        /**
         * 如果flag为true就执行目标方法
         */
        if (flag == true) {
            pjp.proceed(); //执行目标方法
        } else {
            System.out.println("直接返回");
        }
        return null;
    }
}

在这里插入图片描述


版权声明:本文为weixin_42740530原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。