Springboot Aop日志妙用

这个是自定义注解

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface AuthChecker {

}
@Component  //声明组件
@Aspect //  声明切面
public class LogAop extends BaseController {

    /**
     * 自定义日志
     */
    private Logger logger = LoggerFactory.getLogger(LogAop.class);

    /**
     * 功能描述 service切面
     *
     * @param * @param
     * @return void
     * @author
     * @date 2021/6/9
     */
	//定义一个切入点
    @Pointcut("execution(public * com.esp.espplay.play.service.impl.*.*(..))")
    public void webLog() {

    }

    long startTime = System.currentTimeMillis();

    @Before("webLog()")
    public void doBefore(JoinPoint point) {
        logger.info("方法" + point.getSignature().getDeclaringTypeName() + "." + point.getSignature().getName() + "执行开始");
        logger.info("入参为"+ JSON.toJSONString(((MethodSignature)point.getSignature()).getParameterNames())+" : "+ JSON.toJSONString(point.getArgs()));
    }
//    @After("webLog()")
//    public void doAfter(JoinPoint point){
//        logger.info(System.currentTimeMillis()-startTime/1000f +"秒!"+"----------------------");
//    }

    /**
     * 功能描述 controller切面
     *这个是通过注解实现的
     * @param * @param
     * @return void
     * @author
     * @date 2021/6/9
     */
    @Pointcut("@annotation(com.esp.espplay.play.aop.AuthChecker)")
    public void webContro() {

    }
     /**
     * 功能描述 controller切面
     *
     * @param * @param
     * @return void
     * @author
     * @date 2021/6/9
     */
    @Pointcut("execution(public * com.esp.espplay.play.controller.*.*(..))")
    public void webController() {

    }

    // 定义 advise
    @Around("webContro()")
    public ResponseEntity<ResultModel> checkAuth(ProceedingJoinPoint joinPoint) throws Throwable {
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes())
                .getRequest();

        // 检查用户所传递的 token 是否合法
        String token = getUserToken(request);
        if (!token.equalsIgnoreCase("123456")) {
            return responseEntity("错误, 权限不合法!");
        }

        return responseEntity(joinPoint.proceed());
    }

    private String getUserToken(HttpServletRequest request) {
        Cookie[] cookies = request.getCookies();
        if (cookies == null) {
            return "";
        }
        for (Cookie cookie : cookies) {
            if (cookie.getName().equalsIgnoreCase("token")) {
                return cookie.getValue();
            }
        }
        return "";
    }
   @Before("webController()")
   public void doBeforeController(JoinPoint point) {
       logger.info("方法" + point.getSignature().getDeclaringTypeName() + "." + point.getSignature().getName() + "执行开始");
       logger.info("入参为"+ JSON.toJSONString(((MethodSignature)point.getSignature()).getParameterNames())+" : "+ JSON.toJSONString(point.getArgs()));
   }

}

效果图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值