2016-03-15 120 views
1

我試圖用grails創建一個自定義註釋。我不認爲我需要AST轉換。我只是想在調用方法之前添加一些驗證(使用它們的參數)。帶grails的java註釋處理器

我已經創建了以下內容:

>接口(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; 
    } 
} 

> { grails root} /web-app/META-INF/services/javax.annotation.proc essing.Processor

annotations.api.ValidateSomething 

>的TestController

@ValidateSomething 
def index() { 
    println "test" 
} 

當運行控制器動作,只打印 「測試」。

我忘記了什麼嗎?我還需要做其他事嗎?

謝謝。

回答

0

註釋處理是在javac中構建的工具,用於在編譯時間處掃描和處理註釋,而不是在運行時。你想要做的是攔截方法調用。爲此,您可以使用java攔截器或aspectj。