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()));
                }
            }
        }
    }

}
相关推荐
Su米苏几秒前
Spring Boot 中修改 HTTP 响应状态码(即 `response.status`)可以通过以下几种方式实现
java
玉笥寻珍8 分钟前
从零开始:Python语言进阶之异常处理
开发语言·python
Java永无止境10 分钟前
JavaSE常用API之Runtime类:掌控JVM运行时环境
java·开发语言·jvm
caihuayuan510 分钟前
Vue3 Composition API: 企业级应用最佳实践方案
java·大数据·spring boot·后端·课程设计
只在空想家13 分钟前
SpringBoot JAR 启动原理
java·spring boot·后端·jar
龙湾开发16 分钟前
C++ vscode配置c++开发环境
开发语言·c++·笔记·vscode·学习
m0_6799272023 分钟前
练习小项目7:天气状态切换器
前端·javascript·css·html
步行cgn24 分钟前
函数式编程思想详解
java·开发语言·windows
徐子宸25 分钟前
Docker面试题(1)
java·docker·容器