java - 反射找不到注解

标签 java spring annotations

我无法获取bean的注释,我正在使用spring框架:

可运行的测试类:

public class Main {

    public static void main(String[] args) {
        PropertyDescriptor pd = BeanUtils.getPropertyDescriptor(Test.class,"foo");
        Method m=pd.getReadMethod();
        System.out.println(m.isAnnotationPresent(Annot.class));
    }

}

Bean 类;

public class Test {

    private String foo;

        @Annot
        public String getFoo() {
            return foo;
        }

        public void setFoo(String foo) {
            this.foo = foo;
        }

    }

注解类:

public @interface Annot {

}

主类得到“false”作为输出...为什么?

最佳答案

您的注释缺少运行时保留策略。

执行以下操作:

@Retention(RetentionPolicy.RUNTIME)
public @interface Annot {

}

查看this SO 问题解释了默认策略及其作用。 总结该答案中的信息,默认保留策略是CLASS,这意味着注释位于字节码中,但在加载类时不必保留

关于java - 反射找不到注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23885342/

相关文章:

Spring MVC @pathvariable 注解不会将值从接口(interface)传递到实现

java - 像返回导航一样处理操作栏中的向上导航。如何?

java - 如何在 TestNG 中的测试之间等待 X 分钟

java - Spring MVC 4.1 RedirectAttributes 无法正常工作

java - 带有 MVC 的 Spring 3 JSON

java - 在 Spring 中使用 @Cacheable 作为非参数方法

python - 正则表达式匹配联合类型的 "|"分隔值

java - Mongodb 读取首选项模式 NEAREST 但仅限次要成员

java - 关于注解的说明

json - Jersey 在添加 jersey-* 依赖项时不存在 WebApplication 提供程序