aop配合自定义的注解使用,静态类获取request

Posted 好大的月亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了aop配合自定义的注解使用,静态类获取request相关的知识,希望对你有一定的参考价值。

先创建一个注解

package com.fchan.hashmapstudy.aspect;

public @interface CheckIng {
}

aop配置类

在需要aop切入的方法中加上这个注解就可以了

package com.fchan.hashmapstudy.aspect;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;

@Aspect
@Component
public class CheckIngAspect {


    //注解的包名全路径
    @Around("@annotation(com.fchan.hashmapstudy.aspect.CheckIng)")
    public Object checkIng(ProceedingJoinPoint point) throws Throwable {
		//通过 RequestContextHolder 获取 HttpServletRequest
        RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
        ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) requestAttributes;
        HttpServletRequest httpServletRequest = servletRequestAttributes.getRequest();

        //从header中获取token
        String token = httpServletRequest.getHeader("x-toekn");

        //校验toekn,如果校验成功就执行方法,否则就抛异常出去,这里只是为了说明aop配合注解使用,就不多写了
        return point.proceed();
    }

}

在这里插入图片描述

以上是关于aop配合自定义的注解使用,静态类获取request的主要内容,如果未能解决你的问题,请参考以下文章

spring 自定义注解(annotation)与 aop获取注解

AspectJ注解

使用AOP获取自定义注解的内容

参数上使用自定义注解在aop中无法获取到该参数

java自定义注解

AOP通过反射获取自定义注解