gpt4 book ai didi

java - 带非void返回值的@EventListener注释方法不会触发新事件

转载 作者:行者123 更新时间:2023-12-02 10:03:43 27 4
gpt4 key购买 nike

我有一个以下方法,我尝试返回一个非空类型,并希望通过相同的方法(递归地)处理已发布的事件。:

@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注释的方法就像任何其他方法一样,所以这就是为什么它可能有一个非void返回。

关于java - 带非void返回值的@EventListener注释方法不会触发新事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55454051/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com