Dev*_*Guy 5 java spring event-listener
我继承了一些使用多个 Spring EventListeners 来处理特定事件的代码。我注意到在不同的环境中,EventListeners 在发布事件时以不同的顺序执行。
例如,假设我有 2 个 EventListeners:
@EventListener
@Async
public void doSomethingForEvent(SomeEvent event)
Run Code Online (Sandbox Code Playgroud)
和
@EventListener
@Async
public void doAnotherThingForEvent(SomeEvent event)
Run Code Online (Sandbox Code Playgroud)
在一个环境中,在另一个环境doSomethingForEvent之前执行doAnotherThingForEvent,反之亦然。
所以我的问题是,有没有办法知道它们将按什么顺序执行?是因为@Async注解的随机顺序,还是有办法指定顺序?
还可以定义调用某个事件的侦听器的顺序。为此,请在此事件侦听器注释旁边添加 Spring 的通用 @Order 注释。
根据EventListener文档,您可以使用@Order注释并给出不同的值来定义顺序(数字越小优先级越高)
@EventListener
@Order(0)
@Async
public void doSomethingForEvent(SomeEvent event)
Run Code Online (Sandbox Code Playgroud)
和
@EventListener
@Order(1)
@Async
public void doAnotherThingForEvent(SomeEvent event)
Run Code Online (Sandbox Code Playgroud)
在上述情况下,doSomethingForEvent将首先执行,然后doAnotherThingForEvent始终侦听器。
| 归档时间: |
|
| 查看次数: |
3156 次 |
| 最近记录: |