Die Funktion, die ich erreichen möchte, ist, wenn sie in class
上注解了需要验证用户,那么里面的method
就不需要逐个去写这个注解。
如果method
写了注解,则以method
ist.
Nachdem ich es überprüft habe, habe ich festgestellt, dass in den meisten Artikeln davon die Rede ist, wie man die Anmerkungen zu method
上的注解,而没有说到如何获得class
erhält.
Bitte Gott, gib mir einen Code.
In Kombination mit der akzeptierten Antwort lautet der vollständige Code wie folgt:
private AuthType getAuthType(ProceedingJoinPoint pj) {
// 获取切入的 Method
MethodSignature joinPointObject = (MethodSignature) pj.getSignature();
Method method = joinPointObject.getMethod();
boolean flag = method.isAnnotationPresent(AuthTarget.class);
if (flag) {
AuthTarget annotation = method.getAnnotation(AuthTarget.class);
return annotation.value();
} else {
// 如果方法上没有注解,则搜索类上是否有注解
AuthTarget classAnnotation = AnnotationUtils.findAnnotation(joinPointObject.getMethod().getDeclaringClass(), AuthTarget.class);
if (classAnnotation != null) {
return classAnnotation.value();
} else {
return null;
}
}
}
用Spring自带工具
org.springframework.core.annotation.AnnotationUtils#findAnnotation(java.lang.Class<?>, java.lang.Class<A>)
可以看看这篇文章 Java注解
aop中切这里
@Around("log() && @annotation(XXX.XXX.XXX.ControllerApiAnnotationLogin)")
自定义注解
/**
*@author whmyit@163.com
*@Time 2017-06-16
自定义注解 控制 API
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD,ElementType.TYPE})
public @interface ControllerApiAnnotationLogin {
}