我有一个已定义的ApplicationEvent
及其一系列的侦听器。通过Ordered
界面可以正确安排侦听器。
在执行第一个侦听器的过程中,有业务级别的检查来确定是否应应用其余逻辑(来自后续侦听器)。如果此检查失败,则不应执行所有后续事件侦听器。
事件发布者无法使用业务级上下文,因此在发布事件之前我无法进行检查。
我自己可以想到的解决方案:
引发取消选中异常。这是我目前正在做的,但看起来不干净
在每个后续侦听器的开头执行检查。因为可能会添加新的侦听器(而不实现Ordered
接口),所以这样做会浪费大量资源进行重复检查,并且容易出错。
使第一个侦听器成为侦听此类事件的唯一侦听器,然后在对其进行处理后,发布包装为另一种类型的事件。这似乎是一种方法,但是我只想了解是否有更好的选择。
谢谢!