spring@eventlistener注解

xxslljrj  于 2021-07-03  发布在  Java
关注(0)|答案(0)|浏览(228)

我正在尝试用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吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题