Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有相同接口的两个bean上的Spring@EventListener注释_Java_Spring_Event Listener - Fatal编程技术网

Java 具有相同接口的两个bean上的Spring@EventListener注释

Java 具有相同接口的两个bean上的Spring@EventListener注释,java,spring,event-listener,Java,Spring,Event Listener,我正在尝试使用Spring@EventListener发布和处理事件。我有一个接口,它声明了负责处理事件的方法,我有两个不同的处理程序来实现这个接口 接口: public interface Handler { void handle(EventDto eventDto); } 处理程序如下所示: 处理程序#1 处理程序#2 我面临的问题是处理程序2的验证程序从未被调用(@eventValidator.isForHandler2) 但是,会调用第一个处理程序的验证程序,但第二个处理程序

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

接口:

public interface Handler {
    void handle(EventDto eventDto);
}
处理程序如下所示:

处理程序#1

处理程序#2

我面临的问题是处理程序2的验证程序从未被调用(@eventValidator.isForHandler2)

但是,会调用第一个处理程序的验证程序,但第二个处理程序会接管该控件并尝试处理该事件。很明显,它之所以失败,是因为它无法处理它的事件。即使针对第二个处理程序的事件调用了验证器,它也肯定会失败

我试图删除接口并使处理程序独立(没有实现任何公共功能)。这有帮助。但是,为什么它不能在同一个界面上工作呢?这可能是一个与Spring相关的bug吗

@Async
@EventListener(condition = "@eventValidator.isForHandler1(#eventDto)")
public void synchronizeChannel(EventDto eventDto) {
}
@Async
@EventListener(condition = "@eventValidator.isForHandler2(#eventDto)")
public void synchronizeChannel(EventDto eventDto) {
}