cari

Rumah  >  Soal Jawab  >  teks badan

java - Bagaimanakah SpringAOP mendapatkan maklumat anotasi pada kelas yang melaksanakan kaedah?

Fungsi yang ingin saya capai adalah jika ia berada di class上注解了需要验证用户,那么里面的method就不需要逐个去写这个注解。
如果method写了注解,则以method.

Selepas menyemak, saya mendapati kebanyakan artikel bercakap tentang cara mendapatkan anotasi pada method上的注解,而没有说到如何获得class.
Tolong Tuhan berikan saya sekeping kod.

Digabungkan dengan jawapan yang diterima, kod lengkap adalah seperti berikut:

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;
            }
        }
    }
天蓬老师天蓬老师2709 hari yang lalu966

membalas semua(3)saya akan balas

  • PHP中文网

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

    Gunakan alatan Spring sendiriorg.springframework.core.annotation.AnnotationUtils#findAnnotation(java.lang.Class<?>, java.lang.Class<A>)

    balas
    0
  • 怪我咯

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

    Anda boleh membaca artikel ini anotasi Java

    balas
    0
  • typecho

    typecho2017-06-30 09:56:55

    potong aop di sini

    @Around("log() && @annotation(XXX.XXX.XXX.ControllerApiAnnotationLogin)")

    Anotasi tersuai

    /**
    *@author whmyit@163.com
    *@Time 2017-06-16

    • API kawalan anotasi tersuai
      */

    @Retention(RetentionPolicy.RUNTIME)
    @Target({ElementType.METHOD,ElementType.TYPE})
    awam @interface ControllerApiAnnotationLogin {

      String name()  default "" ;   

    }

    balas
    0
  • Batalbalas