我正在尝试使用grails创建自定义注释。我认为我不需要AST转换。我只想在调用方法之前添加一些验证(使用它们的参数)。
我创建了以下内容:
>接口(ValidateSomething.java)
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface ValidateSomething {
}
>处理器(ValidateSomethingProcessor.java)
@SupportedAnnotationTypes({"annotations.ValidateSomething"})
class ValidateSomethingProcessor extends AbstractProcessor {
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
System.out.println("Hello world! :D");
return true;
}
}
&GT; {grails root} /web-app/META-INF/services/javax.annotation.processing.Processor
annotations.api.ValidateSomething
&GT;的TestController
@ValidateSomething
def index() {
println "test"
}
当我运行控制器动作时,它只打印“test”。
我忘了什么吗?我还需要做其他事吗?
感谢。
答案 0 :(得分:0)
注释处理是javac中的工具构建,用于在编译时而不是在运行时扫描和处理注释。你想要做的是拦截方法调用。为此,您可以使用java拦截器或aspectj。