具有相同接口

时间:2017-09-04 09:07:12

标签: java spring event-listener

我尝试使用Spring @EventListener发布和处理事件。我有接口声明负责处理事件的方法,我有2个不同的处理程序来实现这个接口。

接口:

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)

但是,调用第一个验证程序,但第二个处理程序获取控件并尝试处理该事件。显而易见的是它失败了,因为它不能处理它的事件。即使在第二个处理程序的事件中调用了验证器,它也肯定会失败。

我尝试删除接口并使处理程序独立(没有实现任何常见的)。它有所帮助。但是,为什么它不能使用相同的界面?可能是春天相关的bug吗?

0 个答案:

没有答案