通过注释添加额外的处理

时间:2017-12-29 22:38:41

标签: java spring printing annotations runtime

我正在制作一个小项目,而我目前正在努力实现我需要的功能之一。

基本上我想要一个方法在我调用带注释的方法时执行。例如

@PrintAnnotation
public void print(){
  System.out.println("inside method");

打印注释只会打印额外的测试,所以在调用上面的方法时我想得到

"Used print annotation"
"Inside method"

这就是全部。

我正在查看注释处理器API,但除了阅读疯狂的javadoc之外没有任何文档,如果我正确理解它的编译只是因为你不能改变原来的类,只能添加。

我还找到了建议使用反射的答案,但是要使用反射我需要触发代码来检查方法是否注释,但要做到这一点我必须为程序中的每个方法添加一个额外的方法,比如

public void print(){
   checkAnnotation();
   System.out.println("test");
}

但我需要它只使用添加注释,而不是每个类的每个方法中有数百行。

1 个答案:

答案 0 :(得分:1)

通过"仅注释"是不可能的。没有第三方库,也没有自定义代码。

注释只是一个注释,没有别的。

这意味着您必须拥有printcheckAnnotation方法,这些方法会检测您所需目标(类,方法,字段......)上Annotation的存在,并执行您的操作#39; d喜欢。 System.out.println("test");肯定不会这样做。

如果您使用这些printcheckAnnotation方法,请使用这些方法创建实用程序,然后从任意位置调用print,而不是System.out.println

但实际上,你试图实现的是关于AOP。您的自定义注释可以与它一起使用。

然后,您使用spring标记标记了问题,您使用Spring吗?它是一组第三方库并具有AOP。