我正在尝试用spring@eventlistener发布和处理事件。我有一个接口,它声明了负责处理事件的方法,我有两个不同的处理程序来实现这个接口。
接口:
public interface Handler {
void handle(EventDto eventDto);
}
处理程序如下所示:
处理程序#1
@Async
@EventListener(condition = "@eventValidator.isForHandler1(#eventDto)")
public void synchronizeChannel(EventDto eventDto) {
}
处理程序#2
@Async
@EventListener(condition = "@eventValidator.isForHandler2(#eventDto)")
public void synchronizeChannel(EventDto eventDto) {
}
我面临的问题是处理程序2的验证器从未被调用(@eventvalidator.isforhandler2)。
但是,会调用第一个处理程序的验证程序,但第二个处理程序会接管控制并尝试处理事件。很明显,它之所以失败是因为它不能处理它的事件。即使为第二个处理程序调用了验证程序,它也肯定会失败。
我尝试删除接口并使处理程序独立(没有实现任何公共的东西)。这很有帮助。但是,为什么它不能在同一个接口上工作呢?可能是与spring有关的bug吗?
暂无答案!
目前还没有任何答案,快来回答吧!