SpringBootAOP@Pointcut切⼊点表达式排除某些类场景:希望给service包下的所有public⽅法添加开始和结束的info log,但是需要排除和数据库相关的service
其他博⽂都推荐了
@Pointcut("execution(* com.demo.service.*.*(..)) && !execution(* com.demo.service.dbservice.*(..)) ")
类似的⽤法,但是在实际操作中,发现&&这个关键字⽆法使⽤,只能使⽤and才能编译通过,并且@Pointcut只识别了前⾯半句表达式,and(&&)之后的内容被⽆视了。
使⽤以下⽅法满⾜了开发需求:
@Pointcut("execution(public * com.demo.service.*.*(..))")
public void serviceMethods() {
}
@Pointcut("execution(public * com.demo.service.dbservice.*(..))")
public void serviceMethods2() {
}
springboot aop@Pointcut("serviceMethods() && !serviceMethods2()")
public void serviceMethods3() {
}
@Before("serviceMethods3()")
public void startLog(JoinPoint joinPoint) {
String className = Signature().getDeclaringType().getSimpleName();
String methodName = Signature().getName();
logger.info("{}.{} start", className, methodName);
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论