为了账号安全,请及时绑定邮箱和手机立即绑定

SpringAOP如何获得执行方法的class上的注解信息

SpringAOP如何获得执行方法的class上的注解信息

Cats萌萌 2019-03-01 10:52:53
我想实现的功能是,如果在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; } } }
查看完整描述

2 回答

?
慕田峪9158850

TA贡献1794条经验 获得超8个赞

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

查看完整回答
反对 回复 2019-03-01
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

可以看看这篇文章 Java注解

查看完整回答
反对 回复 2019-03-01
?
MYYA

TA贡献1868条经验 获得超4个赞

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

}

查看完整回答
反对 回复 2019-03-01
  • 2 回答
  • 0 关注
  • 1967 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号