如何将值传递给自定义注释?

时间:2014-10-15 11:40:47

标签: java spring annotations

我的疑问就是这个。说,我有一个自定义注释如下:

                    //rest of the code left out for the sake of brevity
                    interface @Name{
                        String myName();
                    }

现在,在使用此注释的类,字段或方法中,我希望将值传递给" myName"来自属性文件,如下所示:

                    @Name(myName="${read.my.name}")
                    public void something(){}

有人可以建议我如何阅读传递给' myName'在我的注释处理器中从属性文件?我已经阅读了一些关于占位符的使用,然后使用@Value,但我不确定我是否可以/应该使用这种方法,一个服务类,我只想要一个标注有这个注释的注释字段或方法?任何指导都将非常感谢。

谢谢和问候!

1 个答案:

答案 0 :(得分:3)

这是我的方法级注释:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Name {

    public String myName();

}

这是一个声明注释的虚拟类:

public class Z {

    @Name(myName = "George")
    public void something() {

    }
}

以下是获取价值的方法:

final Method method = Z.class.getMethod("something");
if (method.isAnnotationPresent(Name.class)) {
    final Annotation annotation = method.getAnnotation(Name.class);
    final Name name = (Name) annotation;
    System.out.println(name.myName()); // Prints George
}