Heim  >  Fragen und Antworten  >  Hauptteil

java - Wie erhält SpringAOP Annotationsinformationen für die Klasse, die die Methode ausführt?

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;
            }
        }
    }
天蓬老师天蓬老师2667 Tage vor933

Antworte allen(3)Ich werde antworten

  • PHP中文网

    PHP中文网2017-06-30 09:56:55

    用Spring自带工具org.springframework.core.annotation.AnnotationUtils#findAnnotation(java.lang.Class<?>, java.lang.Class<A>)

    Antwort
    0
  • 怪我咯

    怪我咯2017-06-30 09:56:55

    可以看看这篇文章 Java注解

    Antwort
    0
  • typecho

    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 "" ;   

    }

    Antwort
    0
  • StornierenAntwort