我在可移植 CDI 扩展中使用以下代码向观察者方法声明添加“默认”限定符。
void processObserverMethod(@Observes ProcessObserverMethod<? extends ConfigurableEvent<?>, ?> observerMethod) {
Set<Annotation> qualifiers = observerMethod.getObserverMethod().getObservedQualifiers();
if (!qualifiers.contains(new AnnotationLiteral<Special>() {})) {
qualifiers.add(new AnnotationLiteral<Normal>() {});
}
目标是拥有两个相互排斥的限定符Normal
,并Special
避免Normal
在每个观察者声明中声明一个。
该代码在 Weld 1.1 中有效,但在 2.0 中无效。我打开了一个错误,但焊接人员告诉我,CDI 规范不支持这个。
有谁知道实现相同结果的替代方法?