JSR 256-Pluggable Annotation Processing API

Pluggable Annotation Processing API:JDK6的新特性:插件式註解處理API

該特性支持在編譯器對註解的處理,Pluggable Annotation Processing API的核心是Annotation Processor即註解處理器,一般需要繼承抽象類javax.annotation.processing.AbstractProcessor。注意,與運行時註解RetentionPolicy.RUNTIME不同,註解處理器只會處理編譯期註解,也就是RetentionPolicy.SOURCE的註解類型,處理的階段位於Java代碼編譯期間。

使用步驟

插件化註解處理API的使用步驟大概如下:

  • 1、自定義一個Annotation Processor,需要繼承javax.annotation.processing.AbstractProcessor,並覆寫process方法。
  • 2、自定義一個註解,註解的元註解需要指定@Retention(RetentionPolicy.SOURCE)
  • 3、需要在聲明的自定義Annotation Processor中使用javax.annotation.processing.SupportedAnnotationTypes指定在第2步創建的註解類型的名稱(注意需要全類名,"包名.註解類型名稱",否則會不生效)。
  • 4、需要在聲明的自定義Annotation Processor中使用javax.annotation.processing.SupportedSourceVersion指定編譯版本。
  • 5、可選操作,可以通在聲明的自定義Annotation Processor中使用javax.annotation.processing.SupportedOptions指定編譯參數。

 

指定自定義Processor的方式:

如果使用IDEA的話,Compiler->Annotation Processors中的Enable annotation processing必須勾選。然後可以通過下面幾種方式指定指定Processor。

  • 1、直接使用編譯參數指定,例如:javac -processor com.xxx.xxxProcessor Main.java。
  • 2、通過服務註冊指定,就是META-INF/services/javax.annotation.processing.Processor文件中添加自定義Processor全路徑名稱。
  • 3、通過Maven的編譯插件的配置指定如下:
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <encoding>UTF-8</encoding>
                <annotationProcessors>
                    <annotationProcessor>
                        club.throwable.processor.AnnotationProcessor
                    </annotationProcessor>
                </annotationProcessors>
            </configuration>
        </plugin>

在編譯打包前需要先確保自定義的Processor已經編譯通過,否則編譯將會報錯,解決方式如下:

第一種是提前使用命令或者IDEA右鍵com.xxx.xxxProcessor對它進行編譯;

第二種是把com.xxx.xxxProcessor放到一個獨立的Jar包引入;

最後使用maven 編譯項目,即可在target下找到自定義的處理過的class文件

 

 

發佈了145 篇原創文章 · 獲贊 109 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章