Nemo

关注TA

路漫漫其修远兮,吾将上下而求索。

  • 深圳市
  • 菜鸟工程师

最近留言

JoinPoint获取访问的类名前/方法前的注解

2017年04月24 18:47 4,700 0 复制链接



/**
* 访问拦截
* @author:Nemo 20170424
*/
@Aspect
@Component
public class AuthAop {

private final Logger logger = Logger.getLogger(getClass());

/**
* 定义切点,所有的controller下的访问都拦截
*/
@Pointcut("execution( * com.nfd.gamma.backend.controller..*(..))")
public void pointCutAt() {}

@Before("pointCutAt()")
public void beforeAction(JoinPoint point) throws OmegaException, NoSuchMethodException {

Class cls = point.getSignature().getDeclaringType();
boolean isNoCheckAuth = cls.isAnnotationPresent(NoCheckAuth.class);
if(isNoCheckAuth){
//类名前注解
Annotation noCheckAuth = cls.getAnnotation(NoCheckAuth.class);
}

//拦截的方法名称
String methodName = point.getSignature().getName();
//拦截的放参数类型
Class[] parameterTypes = ((MethodSignature)point.getSignature()).getMethod().getParameterTypes();
Method method = point.getSignature().getDeclaringType().getMethod(methodName,parameterTypes);
isNoCheckAuth = method.isAnnotationPresent(NoCheckAuth.class);

//如果方法前注解为不拦截登录
if(isNoCheckAuth){
//方法前的注释
NoCheckAuth noCheckAuth = method.getAnnotation(NoCheckAuth.class);
}

}

}
点赞(0)
本文标签aop 注解 joinpoint 拦截
点了个评