JSR 269 - 「可插入註釋處理API」已於2006年發佈。 從那時起,該API的唯一着名用途就是JPA 2.0(JSR 317,2009)的元模型生成。除了JPA 2.0,衆所周知的JSR-269(「Pluggable Annotation Processing API」)用戶?
什麼其他標準化或至少衆所周知框架使用該API?
JSR 269 - 「可插入註釋處理API」已於2006年發佈。 從那時起,該API的唯一着名用途就是JPA 2.0(JSR 317,2009)的元模型生成。除了JPA 2.0,衆所周知的JSR-269(「Pluggable Annotation Processing API」)用戶?
什麼其他標準化或至少衆所周知框架使用該API?
Project Lombok我想是「衆所周知的」。 雖然它似乎不是一個純粹的JSR-269實現,請參閱this thread。
GWT 2.4引入了RequestFactory
框架並提供了JSR-269註釋處理器來驗證使用RequestFactory
的項目,請參閱this page。
Blaze CBAV(基於約束的註釋驗證)仍在開發中,但已經能夠進行一些奇特的編譯時驗證。基本上,您可以使用該庫在註釋中添加元信息,以根據您自己的條件生成編譯器錯誤。
預定義了一些有用的默認約束,但您也可以通過實現驗證器來定義自己的約束,並通過約束註釋將約束綁定到您自己的約束上。當你想使用自己的約束時,驗證器的實現必須以編譯的形式出現在你的類路徑中,所以你可能想要將它封裝起來。給它一個嘗試和探索的可能性;)
例如,你可以在一個類中,一旦確保註釋的給定值僅發生:
public @interface MyAnnotation{
@UniqueValueConstraint(scope=ConstraintScope.CLASS, errorMessage="This value must be unique within class level!")
String value();
}
public class MyClass{
@MyAnnotation("test")
void test1(){}
@MyAnnotation("test")
void test2(){} // Compiler error with your message ;)
}
您可以在Github上的項目: https://github.com/Blazebit/blaze-cbav
Dagger用他們自己的話來說是Android和Java的快速依賴注入器。 Dagger包含一個註釋處理器,用於驗證模塊和注入。此處理器是嚴格的,如果綁定無效或不完整,將導致編譯器錯誤。
Google的Auto項目使用JSR-269生成不可變的值類型等等。他們還提供了一個庫,可以更容易地編寫自己的註釋處理器。
HexaBinding庫使用JSR 269自動生成集成到綁定系統中的POJO子類,以免開發人員編寫過多的鍋爐代碼。
你可以在這裏找到:https://github.com/ltearno/hexa.tools/blob/master/hexa.binding/README.md
而且還有它使用註釋處理生成不可變對象建設者Immutables庫。
MapStruct是一個基於JSR 269的代碼生成器,用於類型安全的bean映射。