除了JPA 2.0之外,众所周知的JSR-269(“Pluggable Annotation Processing API”)用户?

时间:2011-11-06 18:22:01

标签: java annotations

JSR 269 - “Pluggable Annotation Processing API” - 已于2006年发布。 从那时起,这个API唯一众所周知的用途就是JPA 2.0的元模型生成(JSR 317,2009)。

还有哪些标准化或至少众所周知的框架使用该API?

8 个答案:

答案 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映射解决方案之一,易于使用且具有很大的灵活性。