- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 CDI 2.0 事件和带有类和限定符的@observesAsync,可以进一步优化哪些观察者通过某种运行时分配的属性得到通知?也就是说,是否可以通过使用唯一标识符来指定触发哪个单个观察者,还是所有观察者都必须查看事件并决定是否为他们触发?
最佳答案
实现所需行为的典型方法是使用限定符。
... is it possible to specify which single observer gets triggered by using a unique identifier ...
它是 - 使用不会触发任何其他观察者的唯一限定符。它不会以所有观察者“看”事件的方式运作。 CDI 将对此进行过滤,并仅将其传递给与您触发的事件相关的子集。
下面是一个相当详细的例子,说明事件和观察者如何使用限定符;请注意,这可以通过同步和异步事件来完成。与注入(inject)点一样,事件可以有限定符。假设您有以下事件:
@Inject Event<MyPayload> basic;
@Inject @Awesome Event<MyPayload> awesome;
@Inject @Tricky Event<MyPayload> tricky;
@Inject @Awesome @Tricky Event<MyPayload> combined;
为了简单起见,让我们坚持通过 <eventName>.fireAsync(new MyPayload())
触发这些事件.现在对于观察员 - 那些也可以有限定词。限定符集决定了他们将被通知哪些事件。所以这里有一群观察者:
public void asyncObserver1(@ObservesAsync MyPayload event)
public void asyncObserver2(@ObservesAsync @Awesome MyPayload event)
public void asyncObserver3(@ObservesAsync @Tricky MyPayload event)
public void asyncObserver4(@ObservesAsync @Awesome @Tricky MyPayload event)
现在哪个观察者将被通知哪个事件。一般规则是 - 如果观察者限定符集是已触发事件限定符的子集或空集,则通知观察者方法
假设您触发了上述事件:
asyncObserver1
将收到所有事件的通知,因为它的一组限定符是空的asyncObserver2
将被通知 awesome
和 combined
事件asyncObserver3
将被通知 tricky
和 combined
事件asyncObserver4
只会收到 combined
的通知事件最后但同样重要的是,我建议您看一下 CDI documentation以获得更深入的了解。
关于jakarta-ee - CDI,是否可以通过添加限定符属性来过滤@ObservesAsync?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38777555/
使用 CDI 2.0 事件和带有类和限定符的@observesAsync,可以进一步优化哪些观察者通过某种运行时分配的属性得到通知?也就是说,是否可以通过使用唯一标识符来指定触发哪个单个观察者,还是所
CDI 2.0 中的一个can fire an event asynchronously通过调用 Event.fireAsync(),然后使用带有 @ObservesAsync 注释的监听器来监听此事
我是一名优秀的程序员,十分优秀!