AnnotationLiteral类的独立版本?

CDI(上下文dependency injection)框架包含了令人敬畏的类javax.enterprise.util.AnnotationLiteral ,它使得创建Annotation实例变得非常容易(特别适用于测试)。

我想在我自己的库中使用该util类。 但由于我的图书馆已经注意到了CDI,我不想拥有所有其他CDI的东西。 幸运的是,AnnotationLiteral不使用除标准java类之外的任何其他类,因此这应该是可能的。

到目前为止,包含AnnotationLiteral的最小库是官方CDI-API

  javax.enterprise cdi-api 1.0  

但即使我切断了所有依赖项(通过maven排除),jar也将包含许多其他CDI-API和-SPI内容。

所以我的问题是:是否已经有一些(或多或少官方)(maven)库只包含util.AnnotationLiteral类,或者至少没有其他东西?

只要您遵守许可证,就可以将源代码复制到项目中。

如果可能的话,我会保留包名称,因为CDI最终会成为项目依赖项。 我改变包的唯一原因是你决定修改源代码,这当然并不意味着你可以删除许可证。

可以在geronimo api中找到Apache许可版本的AnnotationLiteral 。 看起来它与CDI的其他部分没有任何依赖关系。 如果您不需要在测试中提供的equals和hashCode实现,您甚至可以直接实现注释接口。 这不是很好的风格,但绝对可能。 CDI需要额外的equals和hashCode实现其限定符逻辑。 以下是使用jsf ManagedBean批注的示例:

 public static ManagedBean test = new ManagedBean() { @Override public String name() { return "test"; } @Override public boolean eager() { return false; } @Override public Class annotationType() { return ManagedBean.class; } };