我有以下方法,其中我试图返回一个无无效类型,并希望通过相同的方法(递归)来处理已发布的事件:

@EventListener
@Async

public GenericSpringEvent<?> onGenericEvent(GenericSpringEvent<?> event) throws InterruptedException {

Thread.sleep(5000);
System.out.println("Received spring generic event - " + event.getWhat() + ", thread id " + Thread.currentThread().getId());
return new GenericSpringEvent<String>(String.valueOf(System.currentTimeMillis()), true);
}


该方法最初是由我的应用程序中的以下调用触发的:

GenericSpringEvent<String> genericSpringEvent = new GenericSpringEvent<>("GENERIC - STRING - TRUE", true);
applicationEventPublisher.publishEvent(genericSpringEvent);


监听器仅被调用一次。我期待一个无尽的循环。有人可以解释一下我如何实现它。它不必是相同的侦听器方法,我想了解这种非无效返回功能的工作原理。谢谢!

最佳答案

您只发布一次GenericSpringEvent!这就是原因。
为了再次发布它,我看到了两种选择:

1-您必须执行相同的操作:onGenericEvent方法中的applicationEventPublisher.publishEvent(genericSpringEvent);

2-在onGenericEvent方法周围编写一些方面,以便在返回后执行applicationEventPublisher.publishEvent(returnedGenericSpringEvent);

返回事件不会使其公开,使用@EventListener注释的方法与其他任何方法一样,这就是为什么它可能具有非无效返回的原因。

10-08 08:57