ppgjx 发表于 2022-2-14 19:30

spring boot如何获取类上面的注解

/**
*
* 用户登录拦截器
*
*/
@Slf4j
public class UserLoginInterceptor extends HandlerInterceptorAdapter {

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    //过滤未登录用户
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
      log.info("用户登录拦截器");
      this.hasPermission(handler,request);
      returntrue;
    }

    /**
   * 是否有权限
   */
    private boolean hasPermission(Object handler,HttpServletRequest request) {
      if (handler instanceof HandlerMethod) {
            HandlerMethod handlerMethod = (HandlerMethod) handler;


            // 获取方法上的注解
            PxCheckLogin pxCheckPermission = handlerMethod.getMethod().getAnnotation(PxCheckLogin.class);




      }
      return true;
    }
}


如代码可以获取方法上的注解,但是类上的注解怎么判断呢

萋小磊 发表于 2022-2-14 19:44

为啥你不尝试打个断点看看 HandlerMethod里面有什么呢

snwjas 发表于 2022-2-14 19:48

不都一个样嘛?

Annotation[] annotations = this.getClass().getAnnotations();
Test annotation = this.getClass().getAnnotation(Test.class);

黄教主 发表于 2022-2-14 19:57

使用spring 提供的aop (@Aspect) 自定义切面

宝宝很腻害 发表于 2022-2-14 21:19

Annotation[] annotations = this.getClass().getAnnotations();
Test annotation = this.getClass().getAnnotation(Test.class);

夏橙M兮 发表于 2022-2-14 22:19

建议去看一下spring cache源码,看一下他们是怎么处理缓存上的注解的。我看了一两天,放弃了。caffeine

pkxiehaonan1 发表于 2022-2-15 08:44

反射获取annotation就能拿到了,不用想那么复杂,方法的怎么获取这个也怎么获取就好了

Piz.liu 发表于 2022-2-15 09:25

HandlerMethod handlerMethod = (HandlerMethod) handler;
T classAnno = handlerMethod.getMethod().getDeclaringClass().getAnnotation(T.class);

汝甚屌令尊知否 发表于 2022-2-15 09:37

AnnotationUtils.getAnnotation() Spring自带的工具类获取注解

VioletKiss 发表于 2022-2-15 09:47

不用拿类的注解,用@Aspect就行,@Pointcut定义切点,@Around("pointcut()")处理你想切入的逻辑
页: [1] 2
查看完整版本: spring boot如何获取类上面的注解