JSR 269 - “Pluggable Annotation Processing API” - 已于2006年发布。 从那时起,这个API唯一众所周知的用途就是JPA 2.0的元模型生成(JSR 317,2009)。
还有哪些标准化或至少众所周知的框架使用该API?
答案 0 :(得分:5)
Project Lombok是“众所周知的”。 虽然它似乎不是纯粹的JSR-269实现,但请参阅this thread。
答案 1 :(得分:5)
Dagger是Android和Java的快速依赖注入器。 Dagger包含一个验证模块和注入的注释处理器。此处理器是严格的,如果任何绑定无效或不完整,将导致编译器错误。
答案 2 :(得分:3)
GWT 2.4引入了RequestFactory
框架并提供了JSR-269 Annotation Processor来验证使用RequestFactory
的项目,请参阅this page。
答案 3 :(得分:2)
MapStruct是一个基于JSR 269的代码生成器,用于类型安全的bean到bean的映射。
答案 4 :(得分:1)
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
答案 5 :(得分:1)
HexaBinding库使用JSR 269自动生成POJO子类,这些子类集成到绑定系统中,以减轻开发人员编写太多锅炉板代码的麻烦。
您可以在此处找到它:https://github.com/ltearno/hexa.tools/blob/master/hexa.binding/README.md
还有Immutables库使用注释处理来生成不可变对象构建器。
答案 6 :(得分:0)
Google的Auto项目使用JSR-269生成不可变值类型等。它们还提供了一个库,可以更容易地编写自己的注释处理器。
答案 7 :(得分:0)
Selma mapper也基于JSR 269,是最好的bean to bean映射解决方案之一,易于使用且具有很大的灵活性。