【发布时间】:2018-02-01 19:39:01
【问题描述】:
在 CDI 中是否有一种方法可以调用单个方法,该方法将获取带注释类型的注释,而这些注释本身使用元注释进行注释?
假设我有一个注释@Fred,它可以应用于注释类型。我们将其称为元注释。
进一步假设我有一个注释@Barney,可以应用于一个类。假设@Barney 使用元注释@Fred 进行注释。我们会说任何带有@Barney 注释的类都是带有@Fred 的元注释。
现在假设我正在编写一个扩展程序,它不知道 @Barney,但知道 @Fred,并且想要处理带有 @Fred 元注释的东西。
我正在寻找一种简单的方式来表达“嘿,BeanManager [或其他一些机器],给我所有的 Beans,它们都带有 @Fred 的元注释。 "
我知道我可以手动执行此操作(手动遍历图表、获取类的注释、获取它们的注释等等,直到我检测到有问题的元注释)。
不过,我也知道,例如,Weld 和其他 CDI 实现必须已经做了类似的事情来实现拦截器规范,因为拦截器绑定以大致相同的方式传递。我经常因为在简明扼要的 CDI 世界中忽略了某些东西而感到内疚。我希望现在是这样。
【问题讨论】: