![](https://img.haomeiwen.com/i8553141/d6bba89deb6dcd63.png)
![](https://img.haomeiwen.com/i8553141/4b4f3627a0906d8b.png)
![](https://img.haomeiwen.com/i8553141/0d6f35663608869e.png)
图中的表达式其实是全的,右边结尾是一个括号
![](https://img.haomeiwen.com/i8553141/32e41bcddc6bc4a6.png)
![](https://img.haomeiwen.com/i8553141/3a4b21519328e20e.png)
![](https://img.haomeiwen.com/i8553141/2b8e033a361d39ca.png)
![](https://img.haomeiwen.com/i8553141/1e14807b8b247104.png)
下面附上源码:
@Slf4j
@Aspect
@Component
public class RequestLogAspect {
@Pointcut("execution(public * com.neucloud.testproject.controller..*.*(..))")
public void printLog(){}
@Before("printLog()")
public void doBefore(){
HttpServletRequest request =((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
log.info("url:"+request.getRequestURL());
log.info("ip:"+request.getRemoteAddr());
}
@AfterReturning(returning = "ret",pointcut = "printLog()")
public void doAfter(Object ret){
log.info("response:"+ret);
}
}
会在指定的类,例如图中是接口,在接口调用前执行一个逻辑,然后再接口执行后再执行一个逻辑
网友评论