gpt4 book ai didi

java - 如何知道在 Spring 中哪个 EventListener 将首先执行

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:01:57 29 4
gpt4 key购买 nike

我继承了一些使用多个 Spring EventListener 来处理特定事件的代码。我注意到在不同的环境中,事件发布时 EventListeners 的执行顺序不同。

例如,假设我有 2 个 EventListener:

@EventListener
@Async
public void doSomethingForEvent(SomeEvent event)

@EventListener
@Async
public void doAnotherThingForEvent(SomeEvent event)

在一个环境中,doSomethingForEventdoAnotherThingForEvent 之前执行,而在另一个环境中,反之亦然。

所以我的问题是,有没有办法知道它们将按什么顺序执行?它是因为 @Async 注释的随机顺序,还是有指定顺序的方法?

最佳答案

It is also possible to define the order in which listeners for a certain event are to be invoked. To do so, add Spring's common @Order annotation alongside this event listener annotation.

根据EventListener文档,可以使用@Order注解,给不同的值来定义顺序(数字越小优先级越高)

@EventListener
@Order(0)
@Async
public void doSomethingForEvent(SomeEvent event)

@EventListener
@Order(1)
@Async
public void doAnotherThingForEvent(SomeEvent event)

在上述情况下,doSomethingForEvent 将首先执行,然后 doAnotherThingForEvent 监听器始终执行。

关于java - 如何知道在 Spring 中哪个 EventListener 将首先执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48288561/

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