method.isAnnotationPresent(Xxx.class)一直为null

java 复制代码
​​​​package com.dj.springtest.aspect;

import com.dj.springtest.annotation.RequireRoles;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.web.bind.annotation.RestController;

import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Map;

/**
 * User: ldj
 * Date: 2023/10/22
 * Time: 4:25
 * Description: No Description
 */
@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest
public class PermissionControl {

    @Autowired
    private ApplicationContext applicationContext;

    @Test
    public void test() {
        Map<String, Object> beans = applicationContext.getBeansWithAnnotation(RestController.class);
        for (Object bean : beans.values()) {
            //反射获取字节码对象
            Class clazz = bean.getClass();
            Method[] methods = clazz.getSuperclass().getDeclaredMethods();
            for (Method method : methods) {
                boolean isPresent = method.isAnnotationPresent(RequireRoles.class);
                log.info("是否存在@RequireRoles注解:{}", isPresent);
                if (isPresent) {
                    RequireRoles annotation = method.getAnnotation(RequireRoles.class);
                    log.info("roles:{}",Arrays.toString(annotation.roles()));
                }
            }
        }
    }

}
相关推荐
汉得数字平台3 分钟前
【鲲苍提效】全面洞察用户体验,助力打造高性能前端应用
前端·前端监控
花海如潮淹10 分钟前
前端性能追踪工具:用户体验的毫秒战争
前端·笔记·ux
都叫我大帅哥1 小时前
深入浅出 Resilience4j:Java 微服务的“免疫系统”实战指南
java·spring cloud
Cao_Shixin攻城狮3 小时前
Flutter运行Android项目时显示java版本不兼容(Unsupported class file major version 65)的处理
android·java·flutter
_丿丨丨_5 小时前
XSS(跨站脚本攻击)
前端·网络·xss
古月-一个C++方向的小白5 小时前
C++11之lambda表达式与包装器
开发语言·c++
天天进步20155 小时前
前端安全指南:防御XSS与CSRF攻击
前端·安全·xss
沐知全栈开发6 小时前
Eclipse 生成 jar 包
开发语言
Dcs6 小时前
还在用 Arrays.hashCode?Java 自己也能写出更快的版本!
java
杭州杭州杭州7 小时前
Python笔记
开发语言·笔记·python