带有grails

时间:2016-03-15 13:05:49

标签: java grails groovy annotations

我正在尝试使用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”。

我忘了什么吗?我还需要做其他事吗?

感谢。

1 个答案:

答案 0 :(得分:0)

注释处理是javac中的工具构建,用于在编译时而不是在运行时扫描和处理注释。你想要做的是拦截方法调用。为此,您可以使用java拦截器或aspectj。