1.第一种就是最为普遍的表达式,
/**
* 定义controller切入点拦截规则,拦截controller下的所有方法
*/
@Pointcut("execution(public * com.wawa.system.consumer.*ms.*Controller.*(..))")
public void sysLogAspect() {
}
2.第二种是自定义注解的表达式
/**
* 自定义一个注解类。把注解放到你需要切的方法上
*/
@Pointcut("@annotation(com.wawa.system.annotation.NoLogger)")
public void noLogAspect() {
}
3.第三种是条件表达式
@Pointcut("execution(public * com.wawa.system.consumer.*ms.*Controller.*(..))")
public void sysLogAspect() {
}
@Pointcut("@annotation(com.wawa.system.annotation.NoLogger)")
public void noLogAspect() {
}
/**
* 把上面两种表达式作为条件,
* 其意思就是切所有controller并且排除被@NoLogger所注解的方法
*/
@Pointcut("sysLogAspect()&&!noLogAspect()")
public void logAspect() {
}
下面的片段是几个通知的实例
/**
* 拦截控制层的操作日志
* @param joinPoint
* @return
* @throws Throwable
*/
@Before(value = "logAspect()")
public void