Aop 按类型 方法 注解拦截

package cn.nin.aop.aspect;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import java.util.Arrays;
@Component
@Aspect
public class LogAspect {
    private Logger logger= LoggerFactory.getLogger("cn.nin.aop.aspect.LogAspect");
        
//    @Before(value = "execution(* cn.nin.aop.controller.GoodsController.*(..))")
//    @Before("@within(cn.nin.aop.aspect.Inter)")
//    @Before("@annotation(cn.nin.aop.aspect.Inter)")
//    @Before("@within(cn.nin.aop.aspect.Inter) && @annotation(cn.nin.aop.aspect.Inter)")
      @Before("@within(cn.nin.aop.aspect.Inter) || @annotation(cn.nin.aop.aspect.Inter)")
    public void doBefore(JoinPoint joinPoint){
         logger.info("in before advice");
         logger.info(joinPoint.getSignature().getDeclaringTypeName()+"."+joinPoint.getSignature().getName());
         logger.info(Arrays.toString(joinPoint.getArgs()));
    }
}
@Before(value = "execution(* cn.nin.aop.controller.*.*(..))")

拦截cn.nin.aop.controller包下的所有类型所有方法;

 

@Before(value = "execution(* cn.nin.aop.controller..*.*(..))")

拦截cn.nin.aop.controller包和子包下的所有类型所有方法;

 

@Before(value = "execution(* cn.nin.aop.controller.GoodsController.*(..))")

拦截cn.nin.aop.controller包下GoodsControllerle类型下的所有方法;

 

@Before("@annotation(cn.nin.aop.aspect.Inter)")

方法上标注了Inter注解就会拦截;

 

@Before("@annotation(cn.nin.aop.aspect.Inter)")

方法上标注了Inter注解就会拦截;

 

@Before("@within(cn.nin.aop.aspect.Inter)")

类上标注了Inter注解就会拦截;

 

 @Before("@within(cn.nin.aop.aspect.Inter) && @annotation(cn.nin.aop.aspect.Inter)")

且的关系,类和方法上同时标注这个注解才会拦截;

 

@Before("@within(cn.nin.aop.aspect.Inter) || @annotation(cn.nin.aop.aspect.Inter)")

或的关系,类或者方法上有标注这个注解就会拦截,类上标注拦截所有方法,方法上 标注类上没有只拦截标注的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值