我想實現的功能是,如果在class
上註解了需要驗證用戶,那麼裡面的method
就不需要逐一去寫這個註解。
如果method
寫了註解,則以method
的為準。
查了一下,發現多數文章說的都是如何獲得method
上的註解,而沒有說到如何獲得class
上的註解。
求大神賜給我一段程式碼。
結合採納的答案,完整程式碼如下:
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;
}
}
}
typecho2017-06-30 09:56:55
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 {
String name() default "" ;
}