代码拉取完成,页面将自动刷新
package com.yxkj.springbootdemo.config;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
/**
* @description:
* @projectName:FoundationStudy
* @see:com.yxkj.springbootdemo.config
* @author:zhuyang
* @createTime:2021/10/12 22:58
* @version:1.0 切面配置
*/
@Aspect //表示当前类是一个切面类
@Component
@Slf4j
public class AspectConfig {
/**
* 定义切入点,切入点为com.yxkj.springbootdemo.controller下的所有函数
**/
@Pointcut("execution(public * com.yxkj.springbootdemo.controller..*.*(..))")
public void root() {
}
//当前方法是异常通知
@AfterThrowing("root()")
public void rollback() {
log.info("当前方法是一个异常通知");
}
//当前方法是最终通知
@After("root()")
public void release() {
log.info("当前方法是一个最终通知");
}
//环绕通知
@Around("root()")
public Object transactionAround(ProceedingJoinPoint pjp) throws Throwable {
//定义返回值
Object rtValue = null;
//获取方法执行所需的参数
Object[] args = pjp.getArgs();
log.info("环绕通知执行方法前,传入参数" + (args.length > 0 ? args[0] : ""));
//执行方法
rtValue = pjp.proceed(args);
log.info("环绕通知执行方法后,传出参数" + rtValue);
return rtValue;
}
@Before("root()")
public void doBefore(JoinPoint joinPoint) throws Throwable {
// 接收到请求,记录请求内容
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
// 记录下请求内容
log.info("前置通知:URL : " + request.getRequestURL().toString());
log.info("前置通知:HTTP_METHOD : " + request.getMethod());
log.info("前置通知:IP : " + request.getRemoteAddr());
log.info("前置通知:CLASS_METHOD : " + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());
log.info("前置通知:传入参数 : " + Arrays.toString(joinPoint.getArgs()));
}
@AfterReturning(returning = "ret", pointcut = "root()")
public void doAfterReturning(Object ret) throws Throwable {
// 处理完请求,返回内容
log.info("后置通知:返回参数 : " + ret);
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。